├── .gitattributes
├── .gitignore
├── LICENSE
├── MILive
├── MILive.xcodeproj
│ ├── project.pbxproj
│ └── project.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata
│ │ └── IDEWorkspaceChecks.plist
├── MILive
│ ├── 3rd
│ │ ├── FFmpeg-iOS
│ │ │ ├── include
│ │ │ │ ├── libavcodec
│ │ │ │ │ ├── avcodec.h
│ │ │ │ │ ├── avdct.h
│ │ │ │ │ ├── avfft.h
│ │ │ │ │ ├── d3d11va.h
│ │ │ │ │ ├── dirac.h
│ │ │ │ │ ├── dv_profile.h
│ │ │ │ │ ├── dxva2.h
│ │ │ │ │ ├── jni.h
│ │ │ │ │ ├── mediacodec.h
│ │ │ │ │ ├── qsv.h
│ │ │ │ │ ├── vaapi.h
│ │ │ │ │ ├── vda.h
│ │ │ │ │ ├── vdpau.h
│ │ │ │ │ ├── version.h
│ │ │ │ │ ├── videotoolbox.h
│ │ │ │ │ ├── vorbis_parser.h
│ │ │ │ │ └── xvmc.h
│ │ │ │ ├── libavdevice
│ │ │ │ │ ├── avdevice.h
│ │ │ │ │ └── version.h
│ │ │ │ ├── libavfilter
│ │ │ │ │ ├── avfilter.h
│ │ │ │ │ ├── avfiltergraph.h
│ │ │ │ │ ├── buffersink.h
│ │ │ │ │ ├── buffersrc.h
│ │ │ │ │ └── version.h
│ │ │ │ ├── libavformat
│ │ │ │ │ ├── avformat.h
│ │ │ │ │ ├── avio.h
│ │ │ │ │ └── version.h
│ │ │ │ ├── libavutil
│ │ │ │ │ ├── adler32.h
│ │ │ │ │ ├── aes.h
│ │ │ │ │ ├── aes_ctr.h
│ │ │ │ │ ├── attributes.h
│ │ │ │ │ ├── audio_fifo.h
│ │ │ │ │ ├── avassert.h
│ │ │ │ │ ├── avconfig.h
│ │ │ │ │ ├── avstring.h
│ │ │ │ │ ├── avutil.h
│ │ │ │ │ ├── base64.h
│ │ │ │ │ ├── blowfish.h
│ │ │ │ │ ├── bprint.h
│ │ │ │ │ ├── bswap.h
│ │ │ │ │ ├── buffer.h
│ │ │ │ │ ├── camellia.h
│ │ │ │ │ ├── cast5.h
│ │ │ │ │ ├── channel_layout.h
│ │ │ │ │ ├── common.h
│ │ │ │ │ ├── cpu.h
│ │ │ │ │ ├── crc.h
│ │ │ │ │ ├── des.h
│ │ │ │ │ ├── dict.h
│ │ │ │ │ ├── display.h
│ │ │ │ │ ├── downmix_info.h
│ │ │ │ │ ├── error.h
│ │ │ │ │ ├── eval.h
│ │ │ │ │ ├── ffversion.h
│ │ │ │ │ ├── fifo.h
│ │ │ │ │ ├── file.h
│ │ │ │ │ ├── frame.h
│ │ │ │ │ ├── hash.h
│ │ │ │ │ ├── hmac.h
│ │ │ │ │ ├── hwcontext.h
│ │ │ │ │ ├── hwcontext_cuda.h
│ │ │ │ │ ├── hwcontext_d3d11va.h
│ │ │ │ │ ├── hwcontext_drm.h
│ │ │ │ │ ├── hwcontext_dxva2.h
│ │ │ │ │ ├── hwcontext_qsv.h
│ │ │ │ │ ├── hwcontext_vaapi.h
│ │ │ │ │ ├── hwcontext_vdpau.h
│ │ │ │ │ ├── hwcontext_videotoolbox.h
│ │ │ │ │ ├── imgutils.h
│ │ │ │ │ ├── intfloat.h
│ │ │ │ │ ├── intreadwrite.h
│ │ │ │ │ ├── lfg.h
│ │ │ │ │ ├── log.h
│ │ │ │ │ ├── lzo.h
│ │ │ │ │ ├── macros.h
│ │ │ │ │ ├── mastering_display_metadata.h
│ │ │ │ │ ├── mathematics.h
│ │ │ │ │ ├── md5.h
│ │ │ │ │ ├── mem.h
│ │ │ │ │ ├── motion_vector.h
│ │ │ │ │ ├── murmur3.h
│ │ │ │ │ ├── opt.h
│ │ │ │ │ ├── parseutils.h
│ │ │ │ │ ├── pixdesc.h
│ │ │ │ │ ├── pixelutils.h
│ │ │ │ │ ├── pixfmt.h
│ │ │ │ │ ├── random_seed.h
│ │ │ │ │ ├── rational.h
│ │ │ │ │ ├── rc4.h
│ │ │ │ │ ├── replaygain.h
│ │ │ │ │ ├── ripemd.h
│ │ │ │ │ ├── samplefmt.h
│ │ │ │ │ ├── sha.h
│ │ │ │ │ ├── sha512.h
│ │ │ │ │ ├── spherical.h
│ │ │ │ │ ├── stereo3d.h
│ │ │ │ │ ├── tea.h
│ │ │ │ │ ├── threadmessage.h
│ │ │ │ │ ├── time.h
│ │ │ │ │ ├── timecode.h
│ │ │ │ │ ├── timestamp.h
│ │ │ │ │ ├── tree.h
│ │ │ │ │ ├── twofish.h
│ │ │ │ │ ├── version.h
│ │ │ │ │ └── xtea.h
│ │ │ │ ├── libswresample
│ │ │ │ │ ├── swresample.h
│ │ │ │ │ └── version.h
│ │ │ │ └── libswscale
│ │ │ │ │ ├── swscale.h
│ │ │ │ │ └── version.h
│ │ │ └── lib
│ │ │ │ ├── libavcodec.a
│ │ │ │ ├── libavdevice.a
│ │ │ │ ├── libavfilter.a
│ │ │ │ ├── libavformat.a
│ │ │ │ ├── libavutil.a
│ │ │ │ ├── libswresample.a
│ │ │ │ └── libswscale.a
│ │ └── librtmp
│ │ │ ├── include
│ │ │ ├── librtmp
│ │ │ │ ├── amf.h
│ │ │ │ ├── http.h
│ │ │ │ ├── log.h
│ │ │ │ └── rtmp.h
│ │ │ └── openssl
│ │ │ │ ├── aes.h
│ │ │ │ ├── asn1.h
│ │ │ │ ├── asn1_mac.h
│ │ │ │ ├── asn1t.h
│ │ │ │ ├── bio.h
│ │ │ │ ├── blowfish.h
│ │ │ │ ├── bn.h
│ │ │ │ ├── buffer.h
│ │ │ │ ├── camellia.h
│ │ │ │ ├── cast.h
│ │ │ │ ├── cmac.h
│ │ │ │ ├── cms.h
│ │ │ │ ├── comp.h
│ │ │ │ ├── conf.h
│ │ │ │ ├── conf_api.h
│ │ │ │ ├── crypto.h
│ │ │ │ ├── des.h
│ │ │ │ ├── des_old.h
│ │ │ │ ├── dh.h
│ │ │ │ ├── dsa.h
│ │ │ │ ├── dso.h
│ │ │ │ ├── dtls1.h
│ │ │ │ ├── e_os2.h
│ │ │ │ ├── ebcdic.h
│ │ │ │ ├── ec.h
│ │ │ │ ├── ecdh.h
│ │ │ │ ├── ecdsa.h
│ │ │ │ ├── engine.h
│ │ │ │ ├── err.h
│ │ │ │ ├── evp.h
│ │ │ │ ├── hmac.h
│ │ │ │ ├── idea.h
│ │ │ │ ├── krb5_asn.h
│ │ │ │ ├── kssl.h
│ │ │ │ ├── lhash.h
│ │ │ │ ├── md4.h
│ │ │ │ ├── md5.h
│ │ │ │ ├── mdc2.h
│ │ │ │ ├── modes.h
│ │ │ │ ├── obj_mac.h
│ │ │ │ ├── objects.h
│ │ │ │ ├── ocsp.h
│ │ │ │ ├── opensslconf.h
│ │ │ │ ├── opensslv.h
│ │ │ │ ├── ossl_typ.h
│ │ │ │ ├── pem.h
│ │ │ │ ├── pem2.h
│ │ │ │ ├── pkcs12.h
│ │ │ │ ├── pkcs7.h
│ │ │ │ ├── pqueue.h
│ │ │ │ ├── rand.h
│ │ │ │ ├── rc2.h
│ │ │ │ ├── rc4.h
│ │ │ │ ├── ripemd.h
│ │ │ │ ├── rsa.h
│ │ │ │ ├── safestack.h
│ │ │ │ ├── seed.h
│ │ │ │ ├── sha.h
│ │ │ │ ├── srp.h
│ │ │ │ ├── srtp.h
│ │ │ │ ├── ssl.h
│ │ │ │ ├── ssl2.h
│ │ │ │ ├── ssl23.h
│ │ │ │ ├── ssl3.h
│ │ │ │ ├── stack.h
│ │ │ │ ├── symhacks.h
│ │ │ │ ├── tls1.h
│ │ │ │ ├── ts.h
│ │ │ │ ├── txt_db.h
│ │ │ │ ├── ui.h
│ │ │ │ ├── ui_compat.h
│ │ │ │ ├── whrlpool.h
│ │ │ │ ├── x509.h
│ │ │ │ ├── x509_vfy.h
│ │ │ │ └── x509v3.h
│ │ │ └── lib
│ │ │ ├── libcrypto.a
│ │ │ ├── librtmp.a
│ │ │ └── libssl.a
│ ├── AppDelegate.h
│ ├── AppDelegate.m
│ ├── Assets.xcassets
│ │ ├── AppIcon.appiconset
│ │ │ └── Contents.json
│ │ └── Contents.json
│ ├── Base.lproj
│ │ ├── LaunchScreen.storyboard
│ │ └── Main.storyboard
│ ├── Info.plist
│ ├── MIConst.h
│ ├── ViewController.h
│ ├── ViewController.m
│ ├── audio
│ │ ├── MIAudioCollectionVC.h
│ │ ├── MIAudioCollectionVC.m
│ │ ├── MIAudioQueueConvert.h
│ │ ├── MIAudioQueueConvert.m
│ │ ├── MIAudioQueuePlay.h
│ │ ├── MIAudioQueuePlay.m
│ │ ├── MIAudioQueueRecord.h
│ │ ├── MIAudioQueueRecord.m
│ │ ├── MIAudioUnit.h
│ │ └── MIAudioUnit.m
│ ├── main.m
│ ├── push_stream
│ │ ├── MIAudioRecord.h
│ │ ├── MIAudioRecord.m
│ │ ├── MIPushStreamVC.h
│ │ ├── MIPushStreamVC.m
│ │ ├── MIRtpmClient.h
│ │ ├── MIRtpmClient.m
│ │ ├── PSHWH264Encoder.h
│ │ └── PSHWH264Encoder.m
│ ├── video_collection
│ │ ├── MICalculator.h
│ │ ├── MICalculator.m
│ │ ├── MiVideoCollectVC.h
│ │ └── MiVideoCollectVC.m
│ └── video_encoder
│ │ ├── MIHWH264Encoder.h
│ │ ├── MIHWH264Encoder.m
│ │ ├── MILiveVC.h
│ │ ├── MILiveVC.m
│ │ ├── MISoftH264Encoder.h
│ │ └── MISoftH264Encoder.mm
├── MILiveTests
│ ├── Info.plist
│ └── MILiveTests.m
└── MILiveUITests
│ ├── Info.plist
│ └── MILiveUITests.m
├── MIPlay
└── AVPlayerDemo_01
│ ├── AVPlayerDemo_01.xcodeproj
│ ├── project.pbxproj
│ └── project.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata
│ │ └── IDEWorkspaceChecks.plist
│ ├── AVPlayerDemo_01
│ ├── AppDelegate.h
│ ├── AppDelegate.m
│ ├── Assets.xcassets
│ │ ├── AppIcon.appiconset
│ │ │ └── Contents.json
│ │ ├── Contents.json
│ │ └── sliderIcon.imageset
│ │ │ ├── Contents.json
│ │ │ └── sliderIcon.png
│ ├── Base.lproj
│ │ ├── LaunchScreen.storyboard
│ │ └── Main.storyboard
│ ├── Info.plist
│ ├── LYVideoPlayer
│ │ └── resource
│ │ │ ├── full_screen@2x1.png
│ │ │ └── normal_screen@2x1.png
│ ├── MIVideoPlayer
│ │ ├── MISlider.h
│ │ ├── MISlider.m
│ │ ├── MIVideoPlayer.h
│ │ ├── MIVideoPlayer.m
│ │ ├── MIVideoPlayerController.h
│ │ ├── MIVideoPlayerController.m
│ │ ├── MIVideoPlayerDef.h
│ │ ├── MIVideoPlayerHelper.h
│ │ ├── MIVideoPlayerHelper.m
│ │ ├── MIVideoPlayerPane.h
│ │ ├── MIVideoPlayerPane.m
│ │ └── resource
│ │ │ ├── back@2x.png
│ │ │ ├── fast_forward@2x.png
│ │ │ ├── full_screen@2x.png
│ │ │ ├── normal_screen@2x.png
│ │ │ ├── pause@2x.png
│ │ │ ├── play@2x.png
│ │ │ ├── rewind@2x.png
│ │ │ └── xxsj.mp4
│ ├── PrefixHeader.pch
│ ├── ViewController.h
│ ├── ViewController.m
│ └── main.m
│ ├── AVPlayerDemo_01Tests
│ ├── AVPlayerDemo_01Tests.m
│ └── Info.plist
│ └── AVPlayerDemo_01UITests
│ ├── AVPlayerDemo_01UITests.m
│ └── Info.plist
├── README.md
└── imgs
├── 20190518_aq_01.png
├── 20190518_aq_02.png
├── 20190518_aq_03.png
├── 20190518_aq_04.png
├── 20190518_aq_05.png
├── 20190518_aq_06.png
├── 20190518_aq_07.png
├── 20190518_aq_08.png
├── 20190518_aq_09.png
├── 20190518_aq_10.png
├── 20190518_aq_11.png
├── 20190531_encoder_01.png
├── 20190531_encoder_02.png
├── 20190531_encoder_03.png
├── 20190531_encoder_04.png
├── 20190531_encoder_05.png
├── 20190531_encoder_06.png
├── 20190531_encoder_07.png
├── 20190531_encoder_08.png
├── 20190531_v_h264_01.png
├── 20190531_v_h264_02.png
├── 20190531_v_h264_03.png
├── 20190531_v_h264_04.png
├── 20190531_v_h264_05.png
├── 20190531_v_h264_06.png
├── 20190531_v_h264_07.png
├── 20190531_v_h264_08.png
├── 20190531_v_h264_09.png
├── 20190531_v_h264_10.png
├── 20190531_v_h264_11.png
├── 20190531_v_h264_12.png
├── 20190531_v_h264_13.png
├── 20190531_v_h264_14.png
├── 20190703-rtmp_01.png
├── 20190703-rtmp_02.png
├── 20190703-rtmp_03.png
├── 20190703-rtmp_04.png
├── 20190703-rtmp_05.png
├── 20190703-rtmp_06.png
├── 20190703-rtmp_07.png
├── 20190703-rtmp_08.png
├── 20190703-rtmp_09.png
├── 20190703-rtmp_10.png
├── 20190703-rtmp_11.png
├── 20190703-rtmp_12.png
├── 20190703-rtmp_13.png
└── prj_01.png
/.gitattributes:
--------------------------------------------------------------------------------
1 | *.a filter=lfs diff=lfs merge=lfs -text
2 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Xcode
2 | #
3 | # gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore
4 |
5 | ## Build generated
6 | build/
7 | DerivedData/
8 |
9 | ## Various settings
10 | *.pbxuser
11 | !default.pbxuser
12 | *.mode1v3
13 | !default.mode1v3
14 | *.mode2v3
15 | !default.mode2v3
16 | *.perspectivev3
17 | !default.perspectivev3
18 | xcuserdata/
19 |
20 | ## Other
21 | *.moved-aside
22 | *.xccheckout
23 | *.xcscmblueprint
24 |
25 | ## Obj-C/Swift specific
26 | *.hmap
27 | *.ipa
28 | *.dSYM.zip
29 | *.dSYM
30 |
31 | # CocoaPods
32 | #
33 | # We recommend against adding the Pods directory to your .gitignore. However
34 | # you should judge for yourself, the pros and cons are mentioned at:
35 | # https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control
36 | #
37 | # Pods/
38 |
39 | # Carthage
40 | #
41 | # Add this line if you want to avoid checking in source code from Carthage dependencies.
42 | # Carthage/Checkouts
43 |
44 | Carthage/Build
45 |
46 | # fastlane
47 | #
48 | # It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the
49 | # screenshots whenever they are needed.
50 | # For more information about the recommended setup visit:
51 | # https://docs.fastlane.tools/best-practices/source-control/#source-control
52 |
53 | fastlane/report.xml
54 | fastlane/Preview.html
55 | fastlane/screenshots/**/*.png
56 | fastlane/test_output
57 |
58 | # Code Injection
59 | #
60 | # After new code Injection tools there's a generated folder /iOSInjectionProject
61 | # https://github.com/johnno1962/injectionforxcode
62 |
63 | iOSInjectionProject/
64 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2019 Qi
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/MILive/MILive.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/MILive/MILive.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/MILive/MILive/3rd/FFmpeg-iOS/include/libavcodec/avdct.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of FFmpeg.
3 | *
4 | * FFmpeg is free software; you can redistribute it and/or
5 | * modify it under the terms of the GNU Lesser General Public
6 | * License as published by the Free Software Foundation; either
7 | * version 2.1 of the License, or (at your option) any later version.
8 | *
9 | * FFmpeg is distributed in the hope that it will be useful,
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 | * Lesser General Public License for more details.
13 | *
14 | * You should have received a copy of the GNU Lesser General Public
15 | * License along with FFmpeg; if not, write to the Free Software
16 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
17 | */
18 |
19 | #ifndef AVCODEC_AVDCT_H
20 | #define AVCODEC_AVDCT_H
21 |
22 | #include "libavutil/opt.h"
23 |
24 | /**
25 | * AVDCT context.
26 | * @note function pointers can be NULL if the specific features have been
27 | * disabled at build time.
28 | */
29 | typedef struct AVDCT {
30 | const AVClass *av_class;
31 |
32 | void (*idct)(int16_t *block /* align 16 */);
33 |
34 | /**
35 | * IDCT input permutation.
36 | * Several optimized IDCTs need a permutated input (relative to the
37 | * normal order of the reference IDCT).
38 | * This permutation must be performed before the idct_put/add.
39 | * Note, normally this can be merged with the zigzag/alternate scan
40 | * An example to avoid confusion:
41 | * - (->decode coeffs -> zigzag reorder -> dequant -> reference IDCT -> ...)
42 | * - (x -> reference DCT -> reference IDCT -> x)
43 | * - (x -> reference DCT -> simple_mmx_perm = idct_permutation
44 | * -> simple_idct_mmx -> x)
45 | * - (-> decode coeffs -> zigzag reorder -> simple_mmx_perm -> dequant
46 | * -> simple_idct_mmx -> ...)
47 | */
48 | uint8_t idct_permutation[64];
49 |
50 | void (*fdct)(int16_t *block /* align 16 */);
51 |
52 |
53 | /**
54 | * DCT algorithm.
55 | * must use AVOptions to set this field.
56 | */
57 | int dct_algo;
58 |
59 | /**
60 | * IDCT algorithm.
61 | * must use AVOptions to set this field.
62 | */
63 | int idct_algo;
64 |
65 | void (*get_pixels)(int16_t *block /* align 16 */,
66 | const uint8_t *pixels /* align 8 */,
67 | ptrdiff_t line_size);
68 |
69 | int bits_per_sample;
70 | } AVDCT;
71 |
72 | /**
73 | * Allocates a AVDCT context.
74 | * This needs to be initialized with avcodec_dct_init() after optionally
75 | * configuring it with AVOptions.
76 | *
77 | * To free it use av_free()
78 | */
79 | AVDCT *avcodec_dct_alloc(void);
80 | int avcodec_dct_init(AVDCT *);
81 |
82 | const AVClass *avcodec_dct_get_class(void);
83 |
84 | #endif /* AVCODEC_AVDCT_H */
85 |
--------------------------------------------------------------------------------
/MILive/MILive/3rd/FFmpeg-iOS/include/libavcodec/avfft.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of FFmpeg.
3 | *
4 | * FFmpeg is free software; you can redistribute it and/or
5 | * modify it under the terms of the GNU Lesser General Public
6 | * License as published by the Free Software Foundation; either
7 | * version 2.1 of the License, or (at your option) any later version.
8 | *
9 | * FFmpeg is distributed in the hope that it will be useful,
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 | * Lesser General Public License for more details.
13 | *
14 | * You should have received a copy of the GNU Lesser General Public
15 | * License along with FFmpeg; if not, write to the Free Software
16 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
17 | */
18 |
19 | #ifndef AVCODEC_AVFFT_H
20 | #define AVCODEC_AVFFT_H
21 |
22 | /**
23 | * @file
24 | * @ingroup lavc_fft
25 | * FFT functions
26 | */
27 |
28 | /**
29 | * @defgroup lavc_fft FFT functions
30 | * @ingroup lavc_misc
31 | *
32 | * @{
33 | */
34 |
35 | typedef float FFTSample;
36 |
37 | typedef struct FFTComplex {
38 | FFTSample re, im;
39 | } FFTComplex;
40 |
41 | typedef struct FFTContext FFTContext;
42 |
43 | /**
44 | * Set up a complex FFT.
45 | * @param nbits log2 of the length of the input array
46 | * @param inverse if 0 perform the forward transform, if 1 perform the inverse
47 | */
48 | FFTContext *av_fft_init(int nbits, int inverse);
49 |
50 | /**
51 | * Do the permutation needed BEFORE calling ff_fft_calc().
52 | */
53 | void av_fft_permute(FFTContext *s, FFTComplex *z);
54 |
55 | /**
56 | * Do a complex FFT with the parameters defined in av_fft_init(). The
57 | * input data must be permuted before. No 1.0/sqrt(n) normalization is done.
58 | */
59 | void av_fft_calc(FFTContext *s, FFTComplex *z);
60 |
61 | void av_fft_end(FFTContext *s);
62 |
63 | FFTContext *av_mdct_init(int nbits, int inverse, double scale);
64 | void av_imdct_calc(FFTContext *s, FFTSample *output, const FFTSample *input);
65 | void av_imdct_half(FFTContext *s, FFTSample *output, const FFTSample *input);
66 | void av_mdct_calc(FFTContext *s, FFTSample *output, const FFTSample *input);
67 | void av_mdct_end(FFTContext *s);
68 |
69 | /* Real Discrete Fourier Transform */
70 |
71 | enum RDFTransformType {
72 | DFT_R2C,
73 | IDFT_C2R,
74 | IDFT_R2C,
75 | DFT_C2R,
76 | };
77 |
78 | typedef struct RDFTContext RDFTContext;
79 |
80 | /**
81 | * Set up a real FFT.
82 | * @param nbits log2 of the length of the input array
83 | * @param trans the type of transform
84 | */
85 | RDFTContext *av_rdft_init(int nbits, enum RDFTransformType trans);
86 | void av_rdft_calc(RDFTContext *s, FFTSample *data);
87 | void av_rdft_end(RDFTContext *s);
88 |
89 | /* Discrete Cosine Transform */
90 |
91 | typedef struct DCTContext DCTContext;
92 |
93 | enum DCTTransformType {
94 | DCT_II = 0,
95 | DCT_III,
96 | DCT_I,
97 | DST_I,
98 | };
99 |
100 | /**
101 | * Set up DCT.
102 | *
103 | * @param nbits size of the input array:
104 | * (1 << nbits) for DCT-II, DCT-III and DST-I
105 | * (1 << nbits) + 1 for DCT-I
106 | * @param type the type of transform
107 | *
108 | * @note the first element of the input of DST-I is ignored
109 | */
110 | DCTContext *av_dct_init(int nbits, enum DCTTransformType type);
111 | void av_dct_calc(DCTContext *s, FFTSample *data);
112 | void av_dct_end (DCTContext *s);
113 |
114 | /**
115 | * @}
116 | */
117 |
118 | #endif /* AVCODEC_AVFFT_H */
119 |
--------------------------------------------------------------------------------
/MILive/MILive/3rd/FFmpeg-iOS/include/libavcodec/d3d11va.h:
--------------------------------------------------------------------------------
1 | /*
2 | * Direct3D11 HW acceleration
3 | *
4 | * copyright (c) 2009 Laurent Aimar
5 | * copyright (c) 2015 Steve Lhomme
6 | *
7 | * This file is part of FFmpeg.
8 | *
9 | * FFmpeg is free software; you can redistribute it and/or
10 | * modify it under the terms of the GNU Lesser General Public
11 | * License as published by the Free Software Foundation; either
12 | * version 2.1 of the License, or (at your option) any later version.
13 | *
14 | * FFmpeg is distributed in the hope that it will be useful,
15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17 | * Lesser General Public License for more details.
18 | *
19 | * You should have received a copy of the GNU Lesser General Public
20 | * License along with FFmpeg; if not, write to the Free Software
21 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
22 | */
23 |
24 | #ifndef AVCODEC_D3D11VA_H
25 | #define AVCODEC_D3D11VA_H
26 |
27 | /**
28 | * @file
29 | * @ingroup lavc_codec_hwaccel_d3d11va
30 | * Public libavcodec D3D11VA header.
31 | */
32 |
33 | #if !defined(_WIN32_WINNT) || _WIN32_WINNT < 0x0602
34 | #undef _WIN32_WINNT
35 | #define _WIN32_WINNT 0x0602
36 | #endif
37 |
38 | #include
39 | #include
40 |
41 | /**
42 | * @defgroup lavc_codec_hwaccel_d3d11va Direct3D11
43 | * @ingroup lavc_codec_hwaccel
44 | *
45 | * @{
46 | */
47 |
48 | #define FF_DXVA2_WORKAROUND_SCALING_LIST_ZIGZAG 1 ///< Work around for Direct3D11 and old UVD/UVD+ ATI video cards
49 | #define FF_DXVA2_WORKAROUND_INTEL_CLEARVIDEO 2 ///< Work around for Direct3D11 and old Intel GPUs with ClearVideo interface
50 |
51 | /**
52 | * This structure is used to provides the necessary configurations and data
53 | * to the Direct3D11 FFmpeg HWAccel implementation.
54 | *
55 | * The application must make it available as AVCodecContext.hwaccel_context.
56 | *
57 | * Use av_d3d11va_alloc_context() exclusively to allocate an AVD3D11VAContext.
58 | */
59 | typedef struct AVD3D11VAContext {
60 | /**
61 | * D3D11 decoder object
62 | */
63 | ID3D11VideoDecoder *decoder;
64 |
65 | /**
66 | * D3D11 VideoContext
67 | */
68 | ID3D11VideoContext *video_context;
69 |
70 | /**
71 | * D3D11 configuration used to create the decoder
72 | */
73 | D3D11_VIDEO_DECODER_CONFIG *cfg;
74 |
75 | /**
76 | * The number of surface in the surface array
77 | */
78 | unsigned surface_count;
79 |
80 | /**
81 | * The array of Direct3D surfaces used to create the decoder
82 | */
83 | ID3D11VideoDecoderOutputView **surface;
84 |
85 | /**
86 | * A bit field configuring the workarounds needed for using the decoder
87 | */
88 | uint64_t workaround;
89 |
90 | /**
91 | * Private to the FFmpeg AVHWAccel implementation
92 | */
93 | unsigned report_id;
94 |
95 | /**
96 | * Mutex to access video_context
97 | */
98 | HANDLE context_mutex;
99 | } AVD3D11VAContext;
100 |
101 | /**
102 | * Allocate an AVD3D11VAContext.
103 | *
104 | * @return Newly-allocated AVD3D11VAContext or NULL on failure.
105 | */
106 | AVD3D11VAContext *av_d3d11va_alloc_context(void);
107 |
108 | /**
109 | * @}
110 | */
111 |
112 | #endif /* AVCODEC_D3D11VA_H */
113 |
--------------------------------------------------------------------------------
/MILive/MILive/3rd/FFmpeg-iOS/include/libavcodec/dxva2.h:
--------------------------------------------------------------------------------
1 | /*
2 | * DXVA2 HW acceleration
3 | *
4 | * copyright (c) 2009 Laurent Aimar
5 | *
6 | * This file is part of FFmpeg.
7 | *
8 | * FFmpeg is free software; you can redistribute it and/or
9 | * modify it under the terms of the GNU Lesser General Public
10 | * License as published by the Free Software Foundation; either
11 | * version 2.1 of the License, or (at your option) any later version.
12 | *
13 | * FFmpeg is distributed in the hope that it will be useful,
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 | * Lesser General Public License for more details.
17 | *
18 | * You should have received a copy of the GNU Lesser General Public
19 | * License along with FFmpeg; if not, write to the Free Software
20 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
21 | */
22 |
23 | #ifndef AVCODEC_DXVA2_H
24 | #define AVCODEC_DXVA2_H
25 |
26 | /**
27 | * @file
28 | * @ingroup lavc_codec_hwaccel_dxva2
29 | * Public libavcodec DXVA2 header.
30 | */
31 |
32 | #if !defined(_WIN32_WINNT) || _WIN32_WINNT < 0x0602
33 | #undef _WIN32_WINNT
34 | #define _WIN32_WINNT 0x0602
35 | #endif
36 |
37 | #include
38 | #include
39 | #include
40 |
41 | /**
42 | * @defgroup lavc_codec_hwaccel_dxva2 DXVA2
43 | * @ingroup lavc_codec_hwaccel
44 | *
45 | * @{
46 | */
47 |
48 | #define FF_DXVA2_WORKAROUND_SCALING_LIST_ZIGZAG 1 ///< Work around for DXVA2 and old UVD/UVD+ ATI video cards
49 | #define FF_DXVA2_WORKAROUND_INTEL_CLEARVIDEO 2 ///< Work around for DXVA2 and old Intel GPUs with ClearVideo interface
50 |
51 | /**
52 | * This structure is used to provides the necessary configurations and data
53 | * to the DXVA2 FFmpeg HWAccel implementation.
54 | *
55 | * The application must make it available as AVCodecContext.hwaccel_context.
56 | */
57 | struct dxva_context {
58 | /**
59 | * DXVA2 decoder object
60 | */
61 | IDirectXVideoDecoder *decoder;
62 |
63 | /**
64 | * DXVA2 configuration used to create the decoder
65 | */
66 | const DXVA2_ConfigPictureDecode *cfg;
67 |
68 | /**
69 | * The number of surface in the surface array
70 | */
71 | unsigned surface_count;
72 |
73 | /**
74 | * The array of Direct3D surfaces used to create the decoder
75 | */
76 | LPDIRECT3DSURFACE9 *surface;
77 |
78 | /**
79 | * A bit field configuring the workarounds needed for using the decoder
80 | */
81 | uint64_t workaround;
82 |
83 | /**
84 | * Private to the FFmpeg AVHWAccel implementation
85 | */
86 | unsigned report_id;
87 | };
88 |
89 | /**
90 | * @}
91 | */
92 |
93 | #endif /* AVCODEC_DXVA2_H */
94 |
--------------------------------------------------------------------------------
/MILive/MILive/3rd/FFmpeg-iOS/include/libavcodec/jni.h:
--------------------------------------------------------------------------------
1 | /*
2 | * JNI public API functions
3 | *
4 | * Copyright (c) 2015-2016 Matthieu Bouron
5 | *
6 | * This file is part of FFmpeg.
7 | *
8 | * FFmpeg is free software; you can redistribute it and/or
9 | * modify it under the terms of the GNU Lesser General Public
10 | * License as published by the Free Software Foundation; either
11 | * version 2.1 of the License, or (at your option) any later version.
12 | *
13 | * FFmpeg is distributed in the hope that it will be useful,
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 | * Lesser General Public License for more details.
17 | *
18 | * You should have received a copy of the GNU Lesser General Public
19 | * License along with FFmpeg; if not, write to the Free Software
20 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
21 | */
22 |
23 | #ifndef AVCODEC_JNI_H
24 | #define AVCODEC_JNI_H
25 |
26 | /*
27 | * Manually set a Java virtual machine which will be used to retrieve the JNI
28 | * environment. Once a Java VM is set it cannot be changed afterwards, meaning
29 | * you can call multiple times av_jni_set_java_vm with the same Java VM pointer
30 | * however it will error out if you try to set a different Java VM.
31 | *
32 | * @param vm Java virtual machine
33 | * @param log_ctx context used for logging, can be NULL
34 | * @return 0 on success, < 0 otherwise
35 | */
36 | int av_jni_set_java_vm(void *vm, void *log_ctx);
37 |
38 | /*
39 | * Get the Java virtual machine which has been set with av_jni_set_java_vm.
40 | *
41 | * @param vm Java virtual machine
42 | * @return a pointer to the Java virtual machine
43 | */
44 | void *av_jni_get_java_vm(void *log_ctx);
45 |
46 | #endif /* AVCODEC_JNI_H */
47 |
--------------------------------------------------------------------------------
/MILive/MILive/3rd/FFmpeg-iOS/include/libavcodec/mediacodec.h:
--------------------------------------------------------------------------------
1 | /*
2 | * Android MediaCodec public API
3 | *
4 | * Copyright (c) 2016 Matthieu Bouron
5 | *
6 | * This file is part of FFmpeg.
7 | *
8 | * FFmpeg is free software; you can redistribute it and/or
9 | * modify it under the terms of the GNU Lesser General Public
10 | * License as published by the Free Software Foundation; either
11 | * version 2.1 of the License, or (at your option) any later version.
12 | *
13 | * FFmpeg is distributed in the hope that it will be useful,
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 | * Lesser General Public License for more details.
17 | *
18 | * You should have received a copy of the GNU Lesser General Public
19 | * License along with FFmpeg; if not, write to the Free Software
20 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
21 | */
22 |
23 | #ifndef AVCODEC_MEDIACODEC_H
24 | #define AVCODEC_MEDIACODEC_H
25 |
26 | #include "libavcodec/avcodec.h"
27 |
28 | /**
29 | * This structure holds a reference to a android/view/Surface object that will
30 | * be used as output by the decoder.
31 | *
32 | */
33 | typedef struct AVMediaCodecContext {
34 |
35 | /**
36 | * android/view/Surface object reference.
37 | */
38 | void *surface;
39 |
40 | } AVMediaCodecContext;
41 |
42 | /**
43 | * Allocate and initialize a MediaCodec context.
44 | *
45 | * When decoding with MediaCodec is finished, the caller must free the
46 | * MediaCodec context with av_mediacodec_default_free.
47 | *
48 | * @return a pointer to a newly allocated AVMediaCodecContext on success, NULL otherwise
49 | */
50 | AVMediaCodecContext *av_mediacodec_alloc_context(void);
51 |
52 | /**
53 | * Convenience function that sets up the MediaCodec context.
54 | *
55 | * @param avctx codec context
56 | * @param ctx MediaCodec context to initialize
57 | * @param surface reference to an android/view/Surface
58 | * @return 0 on success, < 0 otherwise
59 | */
60 | int av_mediacodec_default_init(AVCodecContext *avctx, AVMediaCodecContext *ctx, void *surface);
61 |
62 | /**
63 | * This function must be called to free the MediaCodec context initialized with
64 | * av_mediacodec_default_init().
65 | *
66 | * @param avctx codec context
67 | */
68 | void av_mediacodec_default_free(AVCodecContext *avctx);
69 |
70 | /**
71 | * Opaque structure representing a MediaCodec buffer to render.
72 | */
73 | typedef struct MediaCodecBuffer AVMediaCodecBuffer;
74 |
75 | /**
76 | * Release a MediaCodec buffer and render it to the surface that is associated
77 | * with the decoder. This function should only be called once on a given
78 | * buffer, once released the underlying buffer returns to the codec, thus
79 | * subsequent calls to this function will have no effect.
80 | *
81 | * @param buffer the buffer to render
82 | * @param render 1 to release and render the buffer to the surface or 0 to
83 | * discard the buffer
84 | * @return 0 on success, < 0 otherwise
85 | */
86 | int av_mediacodec_release_buffer(AVMediaCodecBuffer *buffer, int render);
87 |
88 | #endif /* AVCODEC_MEDIACODEC_H */
89 |
--------------------------------------------------------------------------------
/MILive/MILive/3rd/FFmpeg-iOS/include/libavcodec/vorbis_parser.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of FFmpeg.
3 | *
4 | * FFmpeg is free software; you can redistribute it and/or
5 | * modify it under the terms of the GNU Lesser General Public
6 | * License as published by the Free Software Foundation; either
7 | * version 2.1 of the License, or (at your option) any later version.
8 | *
9 | * FFmpeg is distributed in the hope that it will be useful,
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 | * Lesser General Public License for more details.
13 | *
14 | * You should have received a copy of the GNU Lesser General Public
15 | * License along with FFmpeg; if not, write to the Free Software
16 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
17 | */
18 |
19 | /**
20 | * @file
21 | * A public API for Vorbis parsing
22 | *
23 | * Determines the duration for each packet.
24 | */
25 |
26 | #ifndef AVCODEC_VORBIS_PARSER_H
27 | #define AVCODEC_VORBIS_PARSER_H
28 |
29 | #include
30 |
31 | typedef struct AVVorbisParseContext AVVorbisParseContext;
32 |
33 | /**
34 | * Allocate and initialize the Vorbis parser using headers in the extradata.
35 | */
36 | AVVorbisParseContext *av_vorbis_parse_init(const uint8_t *extradata,
37 | int extradata_size);
38 |
39 | /**
40 | * Free the parser and everything associated with it.
41 | */
42 | void av_vorbis_parse_free(AVVorbisParseContext **s);
43 |
44 | #define VORBIS_FLAG_HEADER 0x00000001
45 | #define VORBIS_FLAG_COMMENT 0x00000002
46 | #define VORBIS_FLAG_SETUP 0x00000004
47 |
48 | /**
49 | * Get the duration for a Vorbis packet.
50 | *
51 | * If @p flags is @c NULL,
52 | * special frames are considered invalid.
53 | *
54 | * @param s Vorbis parser context
55 | * @param buf buffer containing a Vorbis frame
56 | * @param buf_size size of the buffer
57 | * @param flags flags for special frames
58 | */
59 | int av_vorbis_parse_frame_flags(AVVorbisParseContext *s, const uint8_t *buf,
60 | int buf_size, int *flags);
61 |
62 | /**
63 | * Get the duration for a Vorbis packet.
64 | *
65 | * @param s Vorbis parser context
66 | * @param buf buffer containing a Vorbis frame
67 | * @param buf_size size of the buffer
68 | */
69 | int av_vorbis_parse_frame(AVVorbisParseContext *s, const uint8_t *buf,
70 | int buf_size);
71 |
72 | void av_vorbis_parse_reset(AVVorbisParseContext *s);
73 |
74 | #endif /* AVCODEC_VORBIS_PARSER_H */
75 |
--------------------------------------------------------------------------------
/MILive/MILive/3rd/FFmpeg-iOS/include/libavdevice/version.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of FFmpeg.
3 | *
4 | * FFmpeg is free software; you can redistribute it and/or
5 | * modify it under the terms of the GNU Lesser General Public
6 | * License as published by the Free Software Foundation; either
7 | * version 2.1 of the License, or (at your option) any later version.
8 | *
9 | * FFmpeg is distributed in the hope that it will be useful,
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 | * Lesser General Public License for more details.
13 | *
14 | * You should have received a copy of the GNU Lesser General Public
15 | * License along with FFmpeg; if not, write to the Free Software
16 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
17 | */
18 |
19 | #ifndef AVDEVICE_VERSION_H
20 | #define AVDEVICE_VERSION_H
21 |
22 | /**
23 | * @file
24 | * @ingroup lavd
25 | * Libavdevice version macros
26 | */
27 |
28 | #include "libavutil/version.h"
29 |
30 | #define LIBAVDEVICE_VERSION_MAJOR 57
31 | #define LIBAVDEVICE_VERSION_MINOR 10
32 | #define LIBAVDEVICE_VERSION_MICRO 100
33 |
34 | #define LIBAVDEVICE_VERSION_INT AV_VERSION_INT(LIBAVDEVICE_VERSION_MAJOR, \
35 | LIBAVDEVICE_VERSION_MINOR, \
36 | LIBAVDEVICE_VERSION_MICRO)
37 | #define LIBAVDEVICE_VERSION AV_VERSION(LIBAVDEVICE_VERSION_MAJOR, \
38 | LIBAVDEVICE_VERSION_MINOR, \
39 | LIBAVDEVICE_VERSION_MICRO)
40 | #define LIBAVDEVICE_BUILD LIBAVDEVICE_VERSION_INT
41 |
42 | #define LIBAVDEVICE_IDENT "Lavd" AV_STRINGIFY(LIBAVDEVICE_VERSION)
43 |
44 | /**
45 | * FF_API_* defines may be placed below to indicate public API that will be
46 | * dropped at a future version bump. The defines themselves are not part of
47 | * the public API and may change, break or disappear at any time.
48 | */
49 |
50 | #endif /* AVDEVICE_VERSION_H */
51 |
--------------------------------------------------------------------------------
/MILive/MILive/3rd/FFmpeg-iOS/include/libavfilter/avfiltergraph.h:
--------------------------------------------------------------------------------
1 | /*
2 | * Filter graphs
3 | * copyright (c) 2007 Bobby Bingham
4 | *
5 | * This file is part of FFmpeg.
6 | *
7 | * FFmpeg is free software; you can redistribute it and/or
8 | * modify it under the terms of the GNU Lesser General Public
9 | * License as published by the Free Software Foundation; either
10 | * version 2.1 of the License, or (at your option) any later version.
11 | *
12 | * FFmpeg is distributed in the hope that it will be useful,
13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 | * Lesser General Public License for more details.
16 | *
17 | * You should have received a copy of the GNU Lesser General Public
18 | * License along with FFmpeg; if not, write to the Free Software
19 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20 | */
21 |
22 | #ifndef AVFILTER_AVFILTERGRAPH_H
23 | #define AVFILTER_AVFILTERGRAPH_H
24 |
25 | #include "avfilter.h"
26 | #include "libavutil/log.h"
27 |
28 | #endif /* AVFILTER_AVFILTERGRAPH_H */
29 |
--------------------------------------------------------------------------------
/MILive/MILive/3rd/FFmpeg-iOS/include/libavfilter/version.h:
--------------------------------------------------------------------------------
1 | /*
2 | * Version macros.
3 | *
4 | * This file is part of FFmpeg.
5 | *
6 | * FFmpeg is free software; you can redistribute it and/or
7 | * modify it under the terms of the GNU Lesser General Public
8 | * License as published by the Free Software Foundation; either
9 | * version 2.1 of the License, or (at your option) any later version.
10 | *
11 | * FFmpeg is distributed in the hope that it will be useful,
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 | * Lesser General Public License for more details.
15 | *
16 | * You should have received a copy of the GNU Lesser General Public
17 | * License along with FFmpeg; if not, write to the Free Software
18 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
19 | */
20 |
21 | #ifndef AVFILTER_VERSION_H
22 | #define AVFILTER_VERSION_H
23 |
24 | /**
25 | * @file
26 | * @ingroup lavfi
27 | * Libavfilter version macros
28 | */
29 |
30 | #include "libavutil/version.h"
31 |
32 | #define LIBAVFILTER_VERSION_MAJOR 6
33 | #define LIBAVFILTER_VERSION_MINOR 107
34 | #define LIBAVFILTER_VERSION_MICRO 100
35 |
36 | #define LIBAVFILTER_VERSION_INT AV_VERSION_INT(LIBAVFILTER_VERSION_MAJOR, \
37 | LIBAVFILTER_VERSION_MINOR, \
38 | LIBAVFILTER_VERSION_MICRO)
39 | #define LIBAVFILTER_VERSION AV_VERSION(LIBAVFILTER_VERSION_MAJOR, \
40 | LIBAVFILTER_VERSION_MINOR, \
41 | LIBAVFILTER_VERSION_MICRO)
42 | #define LIBAVFILTER_BUILD LIBAVFILTER_VERSION_INT
43 |
44 | #define LIBAVFILTER_IDENT "Lavfi" AV_STRINGIFY(LIBAVFILTER_VERSION)
45 |
46 | /**
47 | * FF_API_* defines may be placed below to indicate public API that will be
48 | * dropped at a future version bump. The defines themselves are not part of
49 | * the public API and may change, break or disappear at any time.
50 | */
51 |
52 | #ifndef FF_API_OLD_FILTER_OPTS
53 | #define FF_API_OLD_FILTER_OPTS (LIBAVFILTER_VERSION_MAJOR < 7)
54 | #endif
55 | #ifndef FF_API_OLD_FILTER_OPTS_ERROR
56 | #define FF_API_OLD_FILTER_OPTS_ERROR (LIBAVFILTER_VERSION_MAJOR < 7)
57 | #endif
58 | #ifndef FF_API_AVFILTER_OPEN
59 | #define FF_API_AVFILTER_OPEN (LIBAVFILTER_VERSION_MAJOR < 7)
60 | #endif
61 | #ifndef FF_API_AVFILTER_INIT_FILTER
62 | #define FF_API_AVFILTER_INIT_FILTER (LIBAVFILTER_VERSION_MAJOR < 7)
63 | #endif
64 | #ifndef FF_API_OLD_FILTER_REGISTER
65 | #define FF_API_OLD_FILTER_REGISTER (LIBAVFILTER_VERSION_MAJOR < 7)
66 | #endif
67 | #ifndef FF_API_NOCONST_GET_NAME
68 | #define FF_API_NOCONST_GET_NAME (LIBAVFILTER_VERSION_MAJOR < 7)
69 | #endif
70 | #ifndef FF_API_LAVR_OPTS
71 | #define FF_API_LAVR_OPTS (LIBAVFILTER_VERSION_MAJOR < 7)
72 | #endif
73 |
74 | #endif /* AVFILTER_VERSION_H */
75 |
--------------------------------------------------------------------------------
/MILive/MILive/3rd/FFmpeg-iOS/include/libavutil/adler32.h:
--------------------------------------------------------------------------------
1 | /*
2 | * copyright (c) 2006 Mans Rullgard
3 | *
4 | * This file is part of FFmpeg.
5 | *
6 | * FFmpeg is free software; you can redistribute it and/or
7 | * modify it under the terms of the GNU Lesser General Public
8 | * License as published by the Free Software Foundation; either
9 | * version 2.1 of the License, or (at your option) any later version.
10 | *
11 | * FFmpeg is distributed in the hope that it will be useful,
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 | * Lesser General Public License for more details.
15 | *
16 | * You should have received a copy of the GNU Lesser General Public
17 | * License along with FFmpeg; if not, write to the Free Software
18 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
19 | */
20 |
21 | /**
22 | * @file
23 | * @ingroup lavu_adler32
24 | * Public header for Adler-32 hash function implementation.
25 | */
26 |
27 | #ifndef AVUTIL_ADLER32_H
28 | #define AVUTIL_ADLER32_H
29 |
30 | #include
31 | #include "attributes.h"
32 |
33 | /**
34 | * @defgroup lavu_adler32 Adler-32
35 | * @ingroup lavu_hash
36 | * Adler-32 hash function implementation.
37 | *
38 | * @{
39 | */
40 |
41 | /**
42 | * Calculate the Adler32 checksum of a buffer.
43 | *
44 | * Passing the return value to a subsequent av_adler32_update() call
45 | * allows the checksum of multiple buffers to be calculated as though
46 | * they were concatenated.
47 | *
48 | * @param adler initial checksum value
49 | * @param buf pointer to input buffer
50 | * @param len size of input buffer
51 | * @return updated checksum
52 | */
53 | unsigned long av_adler32_update(unsigned long adler, const uint8_t *buf,
54 | unsigned int len) av_pure;
55 |
56 | /**
57 | * @}
58 | */
59 |
60 | #endif /* AVUTIL_ADLER32_H */
61 |
--------------------------------------------------------------------------------
/MILive/MILive/3rd/FFmpeg-iOS/include/libavutil/aes.h:
--------------------------------------------------------------------------------
1 | /*
2 | * copyright (c) 2007 Michael Niedermayer
3 | *
4 | * This file is part of FFmpeg.
5 | *
6 | * FFmpeg is free software; you can redistribute it and/or
7 | * modify it under the terms of the GNU Lesser General Public
8 | * License as published by the Free Software Foundation; either
9 | * version 2.1 of the License, or (at your option) any later version.
10 | *
11 | * FFmpeg is distributed in the hope that it will be useful,
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 | * Lesser General Public License for more details.
15 | *
16 | * You should have received a copy of the GNU Lesser General Public
17 | * License along with FFmpeg; if not, write to the Free Software
18 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
19 | */
20 |
21 | #ifndef AVUTIL_AES_H
22 | #define AVUTIL_AES_H
23 |
24 | #include
25 |
26 | #include "attributes.h"
27 | #include "version.h"
28 |
29 | /**
30 | * @defgroup lavu_aes AES
31 | * @ingroup lavu_crypto
32 | * @{
33 | */
34 |
35 | extern const int av_aes_size;
36 |
37 | struct AVAES;
38 |
39 | /**
40 | * Allocate an AVAES context.
41 | */
42 | struct AVAES *av_aes_alloc(void);
43 |
44 | /**
45 | * Initialize an AVAES context.
46 | * @param key_bits 128, 192 or 256
47 | * @param decrypt 0 for encryption, 1 for decryption
48 | */
49 | int av_aes_init(struct AVAES *a, const uint8_t *key, int key_bits, int decrypt);
50 |
51 | /**
52 | * Encrypt or decrypt a buffer using a previously initialized context.
53 | * @param count number of 16 byte blocks
54 | * @param dst destination array, can be equal to src
55 | * @param src source array, can be equal to dst
56 | * @param iv initialization vector for CBC mode, if NULL then ECB will be used
57 | * @param decrypt 0 for encryption, 1 for decryption
58 | */
59 | void av_aes_crypt(struct AVAES *a, uint8_t *dst, const uint8_t *src, int count, uint8_t *iv, int decrypt);
60 |
61 | /**
62 | * @}
63 | */
64 |
65 | #endif /* AVUTIL_AES_H */
66 |
--------------------------------------------------------------------------------
/MILive/MILive/3rd/FFmpeg-iOS/include/libavutil/aes_ctr.h:
--------------------------------------------------------------------------------
1 | /*
2 | * AES-CTR cipher
3 | * Copyright (c) 2015 Eran Kornblau
4 | *
5 | * This file is part of FFmpeg.
6 | *
7 | * FFmpeg is free software; you can redistribute it and/or
8 | * modify it under the terms of the GNU Lesser General Public
9 | * License as published by the Free Software Foundation; either
10 | * version 2.1 of the License, or (at your option) any later version.
11 | *
12 | * FFmpeg is distributed in the hope that it will be useful,
13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 | * Lesser General Public License for more details.
16 | *
17 | * You should have received a copy of the GNU Lesser General Public
18 | * License along with FFmpeg; if not, write to the Free Software
19 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20 | */
21 |
22 | #ifndef AVUTIL_AES_CTR_H
23 | #define AVUTIL_AES_CTR_H
24 |
25 | #include
26 |
27 | #include "attributes.h"
28 | #include "version.h"
29 |
30 | #define AES_CTR_KEY_SIZE (16)
31 | #define AES_CTR_IV_SIZE (8)
32 |
33 | struct AVAESCTR;
34 |
35 | /**
36 | * Allocate an AVAESCTR context.
37 | */
38 | struct AVAESCTR *av_aes_ctr_alloc(void);
39 |
40 | /**
41 | * Initialize an AVAESCTR context.
42 | * @param key encryption key, must have a length of AES_CTR_KEY_SIZE
43 | */
44 | int av_aes_ctr_init(struct AVAESCTR *a, const uint8_t *key);
45 |
46 | /**
47 | * Release an AVAESCTR context.
48 | */
49 | void av_aes_ctr_free(struct AVAESCTR *a);
50 |
51 | /**
52 | * Process a buffer using a previously initialized context.
53 | * @param dst destination array, can be equal to src
54 | * @param src source array, can be equal to dst
55 | * @param size the size of src and dst
56 | */
57 | void av_aes_ctr_crypt(struct AVAESCTR *a, uint8_t *dst, const uint8_t *src, int size);
58 |
59 | /**
60 | * Get the current iv
61 | */
62 | const uint8_t* av_aes_ctr_get_iv(struct AVAESCTR *a);
63 |
64 | /**
65 | * Generate a random iv
66 | */
67 | void av_aes_ctr_set_random_iv(struct AVAESCTR *a);
68 |
69 | /**
70 | * Forcefully change the iv
71 | */
72 | void av_aes_ctr_set_iv(struct AVAESCTR *a, const uint8_t* iv);
73 |
74 | /**
75 | * Increment the top 64 bit of the iv (performed after each frame)
76 | */
77 | void av_aes_ctr_increment_iv(struct AVAESCTR *a);
78 |
79 | /**
80 | * @}
81 | */
82 |
83 | #endif /* AVUTIL_AES_CTR_H */
84 |
--------------------------------------------------------------------------------
/MILive/MILive/3rd/FFmpeg-iOS/include/libavutil/avassert.h:
--------------------------------------------------------------------------------
1 | /*
2 | * copyright (c) 2010 Michael Niedermayer
3 | *
4 | * This file is part of FFmpeg.
5 | *
6 | * FFmpeg is free software; you can redistribute it and/or
7 | * modify it under the terms of the GNU Lesser General Public
8 | * License as published by the Free Software Foundation; either
9 | * version 2.1 of the License, or (at your option) any later version.
10 | *
11 | * FFmpeg is distributed in the hope that it will be useful,
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 | * Lesser General Public License for more details.
15 | *
16 | * You should have received a copy of the GNU Lesser General Public
17 | * License along with FFmpeg; if not, write to the Free Software
18 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
19 | */
20 |
21 | /**
22 | * @file
23 | * simple assert() macros that are a bit more flexible than ISO C assert().
24 | * @author Michael Niedermayer
25 | */
26 |
27 | #ifndef AVUTIL_AVASSERT_H
28 | #define AVUTIL_AVASSERT_H
29 |
30 | #include
31 | #include "avutil.h"
32 | #include "log.h"
33 |
34 | /**
35 | * assert() equivalent, that is always enabled.
36 | */
37 | #define av_assert0(cond) do { \
38 | if (!(cond)) { \
39 | av_log(NULL, AV_LOG_PANIC, "Assertion %s failed at %s:%d\n", \
40 | AV_STRINGIFY(cond), __FILE__, __LINE__); \
41 | abort(); \
42 | } \
43 | } while (0)
44 |
45 |
46 | /**
47 | * assert() equivalent, that does not lie in speed critical code.
48 | * These asserts() thus can be enabled without fearing speed loss.
49 | */
50 | #if defined(ASSERT_LEVEL) && ASSERT_LEVEL > 0
51 | #define av_assert1(cond) av_assert0(cond)
52 | #else
53 | #define av_assert1(cond) ((void)0)
54 | #endif
55 |
56 |
57 | /**
58 | * assert() equivalent, that does lie in speed critical code.
59 | */
60 | #if defined(ASSERT_LEVEL) && ASSERT_LEVEL > 1
61 | #define av_assert2(cond) av_assert0(cond)
62 | #define av_assert2_fpu() av_assert0_fpu()
63 | #else
64 | #define av_assert2(cond) ((void)0)
65 | #define av_assert2_fpu() ((void)0)
66 | #endif
67 |
68 | /**
69 | * Assert that floating point opperations can be executed.
70 | *
71 | * This will av_assert0() that the cpu is not in MMX state on X86
72 | */
73 | void av_assert0_fpu(void);
74 |
75 | #endif /* AVUTIL_AVASSERT_H */
76 |
--------------------------------------------------------------------------------
/MILive/MILive/3rd/FFmpeg-iOS/include/libavutil/avconfig.h:
--------------------------------------------------------------------------------
1 | /* Generated by ffconf */
2 | #ifndef AVUTIL_AVCONFIG_H
3 | #define AVUTIL_AVCONFIG_H
4 | #define AV_HAVE_BIGENDIAN 0
5 | #define AV_HAVE_FAST_UNALIGNED 1
6 | #endif /* AVUTIL_AVCONFIG_H */
7 |
--------------------------------------------------------------------------------
/MILive/MILive/3rd/FFmpeg-iOS/include/libavutil/base64.h:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2006 Ryan Martell. (rdm4@martellventures.com)
3 | *
4 | * This file is part of FFmpeg.
5 | *
6 | * FFmpeg is free software; you can redistribute it and/or
7 | * modify it under the terms of the GNU Lesser General Public
8 | * License as published by the Free Software Foundation; either
9 | * version 2.1 of the License, or (at your option) any later version.
10 | *
11 | * FFmpeg is distributed in the hope that it will be useful,
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 | * Lesser General Public License for more details.
15 | *
16 | * You should have received a copy of the GNU Lesser General Public
17 | * License along with FFmpeg; if not, write to the Free Software
18 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
19 | */
20 |
21 | #ifndef AVUTIL_BASE64_H
22 | #define AVUTIL_BASE64_H
23 |
24 | #include
25 |
26 | /**
27 | * @defgroup lavu_base64 Base64
28 | * @ingroup lavu_crypto
29 | * @{
30 | */
31 |
32 | /**
33 | * Decode a base64-encoded string.
34 | *
35 | * @param out buffer for decoded data
36 | * @param in null-terminated input string
37 | * @param out_size size in bytes of the out buffer, must be at
38 | * least 3/4 of the length of in, that is AV_BASE64_DECODE_SIZE(strlen(in))
39 | * @return number of bytes written, or a negative value in case of
40 | * invalid input
41 | */
42 | int av_base64_decode(uint8_t *out, const char *in, int out_size);
43 |
44 | /**
45 | * Calculate the output size in bytes needed to decode a base64 string
46 | * with length x to a data buffer.
47 | */
48 | #define AV_BASE64_DECODE_SIZE(x) ((x) * 3LL / 4)
49 |
50 | /**
51 | * Encode data to base64 and null-terminate.
52 | *
53 | * @param out buffer for encoded data
54 | * @param out_size size in bytes of the out buffer (including the
55 | * null terminator), must be at least AV_BASE64_SIZE(in_size)
56 | * @param in input buffer containing the data to encode
57 | * @param in_size size in bytes of the in buffer
58 | * @return out or NULL in case of error
59 | */
60 | char *av_base64_encode(char *out, int out_size, const uint8_t *in, int in_size);
61 |
62 | /**
63 | * Calculate the output size needed to base64-encode x bytes to a
64 | * null-terminated string.
65 | */
66 | #define AV_BASE64_SIZE(x) (((x)+2) / 3 * 4 + 1)
67 |
68 | /**
69 | * @}
70 | */
71 |
72 | #endif /* AVUTIL_BASE64_H */
73 |
--------------------------------------------------------------------------------
/MILive/MILive/3rd/FFmpeg-iOS/include/libavutil/blowfish.h:
--------------------------------------------------------------------------------
1 | /*
2 | * Blowfish algorithm
3 | * Copyright (c) 2012 Samuel Pitoiset
4 | *
5 | * This file is part of FFmpeg.
6 | *
7 | * FFmpeg is free software; you can redistribute it and/or
8 | * modify it under the terms of the GNU Lesser General Public
9 | * License as published by the Free Software Foundation; either
10 | * version 2.1 of the License, or (at your option) any later version.
11 | *
12 | * FFmpeg is distributed in the hope that it will be useful,
13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 | * Lesser General Public License for more details.
16 | *
17 | * You should have received a copy of the GNU Lesser General Public
18 | * License along with FFmpeg; if not, write to the Free Software
19 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20 | */
21 |
22 | #ifndef AVUTIL_BLOWFISH_H
23 | #define AVUTIL_BLOWFISH_H
24 |
25 | #include
26 |
27 | /**
28 | * @defgroup lavu_blowfish Blowfish
29 | * @ingroup lavu_crypto
30 | * @{
31 | */
32 |
33 | #define AV_BF_ROUNDS 16
34 |
35 | typedef struct AVBlowfish {
36 | uint32_t p[AV_BF_ROUNDS + 2];
37 | uint32_t s[4][256];
38 | } AVBlowfish;
39 |
40 | /**
41 | * Allocate an AVBlowfish context.
42 | */
43 | AVBlowfish *av_blowfish_alloc(void);
44 |
45 | /**
46 | * Initialize an AVBlowfish context.
47 | *
48 | * @param ctx an AVBlowfish context
49 | * @param key a key
50 | * @param key_len length of the key
51 | */
52 | void av_blowfish_init(struct AVBlowfish *ctx, const uint8_t *key, int key_len);
53 |
54 | /**
55 | * Encrypt or decrypt a buffer using a previously initialized context.
56 | *
57 | * @param ctx an AVBlowfish context
58 | * @param xl left four bytes halves of input to be encrypted
59 | * @param xr right four bytes halves of input to be encrypted
60 | * @param decrypt 0 for encryption, 1 for decryption
61 | */
62 | void av_blowfish_crypt_ecb(struct AVBlowfish *ctx, uint32_t *xl, uint32_t *xr,
63 | int decrypt);
64 |
65 | /**
66 | * Encrypt or decrypt a buffer using a previously initialized context.
67 | *
68 | * @param ctx an AVBlowfish context
69 | * @param dst destination array, can be equal to src
70 | * @param src source array, can be equal to dst
71 | * @param count number of 8 byte blocks
72 | * @param iv initialization vector for CBC mode, if NULL ECB will be used
73 | * @param decrypt 0 for encryption, 1 for decryption
74 | */
75 | void av_blowfish_crypt(struct AVBlowfish *ctx, uint8_t *dst, const uint8_t *src,
76 | int count, uint8_t *iv, int decrypt);
77 |
78 | /**
79 | * @}
80 | */
81 |
82 | #endif /* AVUTIL_BLOWFISH_H */
83 |
--------------------------------------------------------------------------------
/MILive/MILive/3rd/FFmpeg-iOS/include/libavutil/bswap.h:
--------------------------------------------------------------------------------
1 | /*
2 | * copyright (c) 2006 Michael Niedermayer
3 | *
4 | * This file is part of FFmpeg.
5 | *
6 | * FFmpeg is free software; you can redistribute it and/or
7 | * modify it under the terms of the GNU Lesser General Public
8 | * License as published by the Free Software Foundation; either
9 | * version 2.1 of the License, or (at your option) any later version.
10 | *
11 | * FFmpeg is distributed in the hope that it will be useful,
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 | * Lesser General Public License for more details.
15 | *
16 | * You should have received a copy of the GNU Lesser General Public
17 | * License along with FFmpeg; if not, write to the Free Software
18 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
19 | */
20 |
21 | /**
22 | * @file
23 | * byte swapping routines
24 | */
25 |
26 | #ifndef AVUTIL_BSWAP_H
27 | #define AVUTIL_BSWAP_H
28 |
29 | #include
30 | #include "libavutil/avconfig.h"
31 | #include "attributes.h"
32 |
33 | #ifdef HAVE_AV_CONFIG_H
34 |
35 | #include "config.h"
36 |
37 | #if ARCH_AARCH64
38 | # include "aarch64/bswap.h"
39 | #elif ARCH_ARM
40 | # include "arm/bswap.h"
41 | #elif ARCH_AVR32
42 | # include "avr32/bswap.h"
43 | #elif ARCH_SH4
44 | # include "sh4/bswap.h"
45 | #elif ARCH_X86
46 | # include "x86/bswap.h"
47 | #endif
48 |
49 | #endif /* HAVE_AV_CONFIG_H */
50 |
51 | #define AV_BSWAP16C(x) (((x) << 8 & 0xff00) | ((x) >> 8 & 0x00ff))
52 | #define AV_BSWAP32C(x) (AV_BSWAP16C(x) << 16 | AV_BSWAP16C((x) >> 16))
53 | #define AV_BSWAP64C(x) (AV_BSWAP32C(x) << 32 | AV_BSWAP32C((x) >> 32))
54 |
55 | #define AV_BSWAPC(s, x) AV_BSWAP##s##C(x)
56 |
57 | #ifndef av_bswap16
58 | static av_always_inline av_const uint16_t av_bswap16(uint16_t x)
59 | {
60 | x= (x>>8) | (x<<8);
61 | return x;
62 | }
63 | #endif
64 |
65 | #ifndef av_bswap32
66 | static av_always_inline av_const uint32_t av_bswap32(uint32_t x)
67 | {
68 | return AV_BSWAP32C(x);
69 | }
70 | #endif
71 |
72 | #ifndef av_bswap64
73 | static inline uint64_t av_const av_bswap64(uint64_t x)
74 | {
75 | return (uint64_t)av_bswap32(x) << 32 | av_bswap32(x >> 32);
76 | }
77 | #endif
78 |
79 | // be2ne ... big-endian to native-endian
80 | // le2ne ... little-endian to native-endian
81 |
82 | #if AV_HAVE_BIGENDIAN
83 | #define av_be2ne16(x) (x)
84 | #define av_be2ne32(x) (x)
85 | #define av_be2ne64(x) (x)
86 | #define av_le2ne16(x) av_bswap16(x)
87 | #define av_le2ne32(x) av_bswap32(x)
88 | #define av_le2ne64(x) av_bswap64(x)
89 | #define AV_BE2NEC(s, x) (x)
90 | #define AV_LE2NEC(s, x) AV_BSWAPC(s, x)
91 | #else
92 | #define av_be2ne16(x) av_bswap16(x)
93 | #define av_be2ne32(x) av_bswap32(x)
94 | #define av_be2ne64(x) av_bswap64(x)
95 | #define av_le2ne16(x) (x)
96 | #define av_le2ne32(x) (x)
97 | #define av_le2ne64(x) (x)
98 | #define AV_BE2NEC(s, x) AV_BSWAPC(s, x)
99 | #define AV_LE2NEC(s, x) (x)
100 | #endif
101 |
102 | #define AV_BE2NE16C(x) AV_BE2NEC(16, x)
103 | #define AV_BE2NE32C(x) AV_BE2NEC(32, x)
104 | #define AV_BE2NE64C(x) AV_BE2NEC(64, x)
105 | #define AV_LE2NE16C(x) AV_LE2NEC(16, x)
106 | #define AV_LE2NE32C(x) AV_LE2NEC(32, x)
107 | #define AV_LE2NE64C(x) AV_LE2NEC(64, x)
108 |
109 | #endif /* AVUTIL_BSWAP_H */
110 |
--------------------------------------------------------------------------------
/MILive/MILive/3rd/FFmpeg-iOS/include/libavutil/camellia.h:
--------------------------------------------------------------------------------
1 | /*
2 | * An implementation of the CAMELLIA algorithm as mentioned in RFC3713
3 | * Copyright (c) 2014 Supraja Meedinti
4 | *
5 | * This file is part of FFmpeg.
6 | *
7 | * FFmpeg is free software; you can redistribute it and/or
8 | * modify it under the terms of the GNU Lesser General Public
9 | * License as published by the Free Software Foundation; either
10 | * version 2.1 of the License, or (at your option) any later version.
11 | *
12 | * FFmpeg is distributed in the hope that it will be useful,
13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 | * Lesser General Public License for more details.
16 | *
17 | * You should have received a copy of the GNU Lesser General Public
18 | * License along with FFmpeg; if not, write to the Free Software
19 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20 | */
21 |
22 | #ifndef AVUTIL_CAMELLIA_H
23 | #define AVUTIL_CAMELLIA_H
24 |
25 | #include
26 |
27 |
28 | /**
29 | * @file
30 | * @brief Public header for libavutil CAMELLIA algorithm
31 | * @defgroup lavu_camellia CAMELLIA
32 | * @ingroup lavu_crypto
33 | * @{
34 | */
35 |
36 | extern const int av_camellia_size;
37 |
38 | struct AVCAMELLIA;
39 |
40 | /**
41 | * Allocate an AVCAMELLIA context
42 | * To free the struct: av_free(ptr)
43 | */
44 | struct AVCAMELLIA *av_camellia_alloc(void);
45 |
46 | /**
47 | * Initialize an AVCAMELLIA context.
48 | *
49 | * @param ctx an AVCAMELLIA context
50 | * @param key a key of 16, 24, 32 bytes used for encryption/decryption
51 | * @param key_bits number of keybits: possible are 128, 192, 256
52 | */
53 | int av_camellia_init(struct AVCAMELLIA *ctx, const uint8_t *key, int key_bits);
54 |
55 | /**
56 | * Encrypt or decrypt a buffer using a previously initialized context
57 | *
58 | * @param ctx an AVCAMELLIA context
59 | * @param dst destination array, can be equal to src
60 | * @param src source array, can be equal to dst
61 | * @param count number of 16 byte blocks
62 | * @paran iv initialization vector for CBC mode, NULL for ECB mode
63 | * @param decrypt 0 for encryption, 1 for decryption
64 | */
65 | void av_camellia_crypt(struct AVCAMELLIA *ctx, uint8_t *dst, const uint8_t *src, int count, uint8_t* iv, int decrypt);
66 |
67 | /**
68 | * @}
69 | */
70 | #endif /* AVUTIL_CAMELLIA_H */
71 |
--------------------------------------------------------------------------------
/MILive/MILive/3rd/FFmpeg-iOS/include/libavutil/cast5.h:
--------------------------------------------------------------------------------
1 | /*
2 | * An implementation of the CAST128 algorithm as mentioned in RFC2144
3 | * Copyright (c) 2014 Supraja Meedinti
4 | *
5 | * This file is part of FFmpeg.
6 | *
7 | * FFmpeg is free software; you can redistribute it and/or
8 | * modify it under the terms of the GNU Lesser General Public
9 | * License as published by the Free Software Foundation; either
10 | * version 2.1 of the License, or (at your option) any later version.
11 | *
12 | * FFmpeg is distributed in the hope that it will be useful,
13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 | * Lesser General Public License for more details.
16 | *
17 | * You should have received a copy of the GNU Lesser General Public
18 | * License along with FFmpeg; if not, write to the Free Software
19 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20 | */
21 |
22 | #ifndef AVUTIL_CAST5_H
23 | #define AVUTIL_CAST5_H
24 |
25 | #include
26 |
27 |
28 | /**
29 | * @file
30 | * @brief Public header for libavutil CAST5 algorithm
31 | * @defgroup lavu_cast5 CAST5
32 | * @ingroup lavu_crypto
33 | * @{
34 | */
35 |
36 | extern const int av_cast5_size;
37 |
38 | struct AVCAST5;
39 |
40 | /**
41 | * Allocate an AVCAST5 context
42 | * To free the struct: av_free(ptr)
43 | */
44 | struct AVCAST5 *av_cast5_alloc(void);
45 | /**
46 | * Initialize an AVCAST5 context.
47 | *
48 | * @param ctx an AVCAST5 context
49 | * @param key a key of 5,6,...16 bytes used for encryption/decryption
50 | * @param key_bits number of keybits: possible are 40,48,...,128
51 | * @return 0 on success, less than 0 on failure
52 | */
53 | int av_cast5_init(struct AVCAST5 *ctx, const uint8_t *key, int key_bits);
54 |
55 | /**
56 | * Encrypt or decrypt a buffer using a previously initialized context, ECB mode only
57 | *
58 | * @param ctx an AVCAST5 context
59 | * @param dst destination array, can be equal to src
60 | * @param src source array, can be equal to dst
61 | * @param count number of 8 byte blocks
62 | * @param decrypt 0 for encryption, 1 for decryption
63 | */
64 | void av_cast5_crypt(struct AVCAST5 *ctx, uint8_t *dst, const uint8_t *src, int count, int decrypt);
65 |
66 | /**
67 | * Encrypt or decrypt a buffer using a previously initialized context
68 | *
69 | * @param ctx an AVCAST5 context
70 | * @param dst destination array, can be equal to src
71 | * @param src source array, can be equal to dst
72 | * @param count number of 8 byte blocks
73 | * @param iv initialization vector for CBC mode, NULL for ECB mode
74 | * @param decrypt 0 for encryption, 1 for decryption
75 | */
76 | void av_cast5_crypt2(struct AVCAST5 *ctx, uint8_t *dst, const uint8_t *src, int count, uint8_t *iv, int decrypt);
77 | /**
78 | * @}
79 | */
80 | #endif /* AVUTIL_CAST5_H */
81 |
--------------------------------------------------------------------------------
/MILive/MILive/3rd/FFmpeg-iOS/include/libavutil/crc.h:
--------------------------------------------------------------------------------
1 | /*
2 | * copyright (c) 2006 Michael Niedermayer
3 | *
4 | * This file is part of FFmpeg.
5 | *
6 | * FFmpeg is free software; you can redistribute it and/or
7 | * modify it under the terms of the GNU Lesser General Public
8 | * License as published by the Free Software Foundation; either
9 | * version 2.1 of the License, or (at your option) any later version.
10 | *
11 | * FFmpeg is distributed in the hope that it will be useful,
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 | * Lesser General Public License for more details.
15 | *
16 | * You should have received a copy of the GNU Lesser General Public
17 | * License along with FFmpeg; if not, write to the Free Software
18 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
19 | */
20 |
21 | /**
22 | * @file
23 | * @ingroup lavu_crc32
24 | * Public header for CRC hash function implementation.
25 | */
26 |
27 | #ifndef AVUTIL_CRC_H
28 | #define AVUTIL_CRC_H
29 |
30 | #include
31 | #include
32 | #include "attributes.h"
33 | #include "version.h"
34 |
35 | /**
36 | * @defgroup lavu_crc32 CRC
37 | * @ingroup lavu_hash
38 | * CRC (Cyclic Redundancy Check) hash function implementation.
39 | *
40 | * This module supports numerous CRC polynomials, in addition to the most
41 | * widely used CRC-32-IEEE. See @ref AVCRCId for a list of available
42 | * polynomials.
43 | *
44 | * @{
45 | */
46 |
47 | typedef uint32_t AVCRC;
48 |
49 | typedef enum {
50 | AV_CRC_8_ATM,
51 | AV_CRC_16_ANSI,
52 | AV_CRC_16_CCITT,
53 | AV_CRC_32_IEEE,
54 | AV_CRC_32_IEEE_LE, /*< reversed bitorder version of AV_CRC_32_IEEE */
55 | AV_CRC_16_ANSI_LE, /*< reversed bitorder version of AV_CRC_16_ANSI */
56 | #if FF_API_CRC_BIG_TABLE
57 | AV_CRC_24_IEEE = 12,
58 | #else
59 | AV_CRC_24_IEEE,
60 | #endif /* FF_API_CRC_BIG_TABLE */
61 | AV_CRC_MAX, /*< Not part of public API! Do not use outside libavutil. */
62 | }AVCRCId;
63 |
64 | /**
65 | * Initialize a CRC table.
66 | * @param ctx must be an array of size sizeof(AVCRC)*257 or sizeof(AVCRC)*1024
67 | * @param le If 1, the lowest bit represents the coefficient for the highest
68 | * exponent of the corresponding polynomial (both for poly and
69 | * actual CRC).
70 | * If 0, you must swap the CRC parameter and the result of av_crc
71 | * if you need the standard representation (can be simplified in
72 | * most cases to e.g. bswap16):
73 | * av_bswap32(crc << (32-bits))
74 | * @param bits number of bits for the CRC
75 | * @param poly generator polynomial without the x**bits coefficient, in the
76 | * representation as specified by le
77 | * @param ctx_size size of ctx in bytes
78 | * @return <0 on failure
79 | */
80 | int av_crc_init(AVCRC *ctx, int le, int bits, uint32_t poly, int ctx_size);
81 |
82 | /**
83 | * Get an initialized standard CRC table.
84 | * @param crc_id ID of a standard CRC
85 | * @return a pointer to the CRC table or NULL on failure
86 | */
87 | const AVCRC *av_crc_get_table(AVCRCId crc_id);
88 |
89 | /**
90 | * Calculate the CRC of a block.
91 | * @param crc CRC of previous blocks if any or initial value for CRC
92 | * @return CRC updated with the data from the given block
93 | *
94 | * @see av_crc_init() "le" parameter
95 | */
96 | uint32_t av_crc(const AVCRC *ctx, uint32_t crc,
97 | const uint8_t *buffer, size_t length) av_pure;
98 |
99 | /**
100 | * @}
101 | */
102 |
103 | #endif /* AVUTIL_CRC_H */
104 |
--------------------------------------------------------------------------------
/MILive/MILive/3rd/FFmpeg-iOS/include/libavutil/des.h:
--------------------------------------------------------------------------------
1 | /*
2 | * DES encryption/decryption
3 | * Copyright (c) 2007 Reimar Doeffinger
4 | *
5 | * This file is part of FFmpeg.
6 | *
7 | * FFmpeg is free software; you can redistribute it and/or
8 | * modify it under the terms of the GNU Lesser General Public
9 | * License as published by the Free Software Foundation; either
10 | * version 2.1 of the License, or (at your option) any later version.
11 | *
12 | * FFmpeg is distributed in the hope that it will be useful,
13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 | * Lesser General Public License for more details.
16 | *
17 | * You should have received a copy of the GNU Lesser General Public
18 | * License along with FFmpeg; if not, write to the Free Software
19 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20 | */
21 |
22 | #ifndef AVUTIL_DES_H
23 | #define AVUTIL_DES_H
24 |
25 | #include
26 |
27 | /**
28 | * @defgroup lavu_des DES
29 | * @ingroup lavu_crypto
30 | * @{
31 | */
32 |
33 | typedef struct AVDES {
34 | uint64_t round_keys[3][16];
35 | int triple_des;
36 | } AVDES;
37 |
38 | /**
39 | * Allocate an AVDES context.
40 | */
41 | AVDES *av_des_alloc(void);
42 |
43 | /**
44 | * @brief Initializes an AVDES context.
45 | *
46 | * @param key_bits must be 64 or 192
47 | * @param decrypt 0 for encryption/CBC-MAC, 1 for decryption
48 | * @return zero on success, negative value otherwise
49 | */
50 | int av_des_init(struct AVDES *d, const uint8_t *key, int key_bits, int decrypt);
51 |
52 | /**
53 | * @brief Encrypts / decrypts using the DES algorithm.
54 | *
55 | * @param count number of 8 byte blocks
56 | * @param dst destination array, can be equal to src, must be 8-byte aligned
57 | * @param src source array, can be equal to dst, must be 8-byte aligned, may be NULL
58 | * @param iv initialization vector for CBC mode, if NULL then ECB will be used,
59 | * must be 8-byte aligned
60 | * @param decrypt 0 for encryption, 1 for decryption
61 | */
62 | void av_des_crypt(struct AVDES *d, uint8_t *dst, const uint8_t *src, int count, uint8_t *iv, int decrypt);
63 |
64 | /**
65 | * @brief Calculates CBC-MAC using the DES algorithm.
66 | *
67 | * @param count number of 8 byte blocks
68 | * @param dst destination array, can be equal to src, must be 8-byte aligned
69 | * @param src source array, can be equal to dst, must be 8-byte aligned, may be NULL
70 | */
71 | void av_des_mac(struct AVDES *d, uint8_t *dst, const uint8_t *src, int count);
72 |
73 | /**
74 | * @}
75 | */
76 |
77 | #endif /* AVUTIL_DES_H */
78 |
--------------------------------------------------------------------------------
/MILive/MILive/3rd/FFmpeg-iOS/include/libavutil/downmix_info.h:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2014 Tim Walker
3 | *
4 | * This file is part of FFmpeg.
5 | *
6 | * FFmpeg is free software; you can redistribute it and/or
7 | * modify it under the terms of the GNU Lesser General Public
8 | * License as published by the Free Software Foundation; either
9 | * version 2.1 of the License, or (at your option) any later version.
10 | *
11 | * FFmpeg is distributed in the hope that it will be useful,
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 | * Lesser General Public License for more details.
15 | *
16 | * You should have received a copy of the GNU Lesser General Public
17 | * License along with FFmpeg; if not, write to the Free Software
18 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
19 | */
20 |
21 | #ifndef AVUTIL_DOWNMIX_INFO_H
22 | #define AVUTIL_DOWNMIX_INFO_H
23 |
24 | #include "frame.h"
25 |
26 | /**
27 | * @file
28 | * audio downmix medatata
29 | */
30 |
31 | /**
32 | * @addtogroup lavu_audio
33 | * @{
34 | */
35 |
36 | /**
37 | * @defgroup downmix_info Audio downmix metadata
38 | * @{
39 | */
40 |
41 | /**
42 | * Possible downmix types.
43 | */
44 | enum AVDownmixType {
45 | AV_DOWNMIX_TYPE_UNKNOWN, /**< Not indicated. */
46 | AV_DOWNMIX_TYPE_LORO, /**< Lo/Ro 2-channel downmix (Stereo). */
47 | AV_DOWNMIX_TYPE_LTRT, /**< Lt/Rt 2-channel downmix, Dolby Surround compatible. */
48 | AV_DOWNMIX_TYPE_DPLII, /**< Lt/Rt 2-channel downmix, Dolby Pro Logic II compatible. */
49 | AV_DOWNMIX_TYPE_NB /**< Number of downmix types. Not part of ABI. */
50 | };
51 |
52 | /**
53 | * This structure describes optional metadata relevant to a downmix procedure.
54 | *
55 | * All fields are set by the decoder to the value indicated in the audio
56 | * bitstream (if present), or to a "sane" default otherwise.
57 | */
58 | typedef struct AVDownmixInfo {
59 | /**
60 | * Type of downmix preferred by the mastering engineer.
61 | */
62 | enum AVDownmixType preferred_downmix_type;
63 |
64 | /**
65 | * Absolute scale factor representing the nominal level of the center
66 | * channel during a regular downmix.
67 | */
68 | double center_mix_level;
69 |
70 | /**
71 | * Absolute scale factor representing the nominal level of the center
72 | * channel during an Lt/Rt compatible downmix.
73 | */
74 | double center_mix_level_ltrt;
75 |
76 | /**
77 | * Absolute scale factor representing the nominal level of the surround
78 | * channels during a regular downmix.
79 | */
80 | double surround_mix_level;
81 |
82 | /**
83 | * Absolute scale factor representing the nominal level of the surround
84 | * channels during an Lt/Rt compatible downmix.
85 | */
86 | double surround_mix_level_ltrt;
87 |
88 | /**
89 | * Absolute scale factor representing the level at which the LFE data is
90 | * mixed into L/R channels during downmixing.
91 | */
92 | double lfe_mix_level;
93 | } AVDownmixInfo;
94 |
95 | /**
96 | * Get a frame's AV_FRAME_DATA_DOWNMIX_INFO side data for editing.
97 | *
98 | * If the side data is absent, it is created and added to the frame.
99 | *
100 | * @param frame the frame for which the side data is to be obtained or created
101 | *
102 | * @return the AVDownmixInfo structure to be edited by the caller, or NULL if
103 | * the structure cannot be allocated.
104 | */
105 | AVDownmixInfo *av_downmix_info_update_side_data(AVFrame *frame);
106 |
107 | /**
108 | * @}
109 | */
110 |
111 | /**
112 | * @}
113 | */
114 |
115 | #endif /* AVUTIL_DOWNMIX_INFO_H */
116 |
--------------------------------------------------------------------------------
/MILive/MILive/3rd/FFmpeg-iOS/include/libavutil/ffversion.h:
--------------------------------------------------------------------------------
1 | /* Automatically generated by version.sh, do not manually edit! */
2 | #ifndef AVUTIL_FFVERSION_H
3 | #define AVUTIL_FFVERSION_H
4 | #define FFMPEG_VERSION "3.4"
5 | #endif /* AVUTIL_FFVERSION_H */
6 |
--------------------------------------------------------------------------------
/MILive/MILive/3rd/FFmpeg-iOS/include/libavutil/file.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of FFmpeg.
3 | *
4 | * FFmpeg is free software; you can redistribute it and/or
5 | * modify it under the terms of the GNU Lesser General Public
6 | * License as published by the Free Software Foundation; either
7 | * version 2.1 of the License, or (at your option) any later version.
8 | *
9 | * FFmpeg is distributed in the hope that it will be useful,
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 | * Lesser General Public License for more details.
13 | *
14 | * You should have received a copy of the GNU Lesser General Public
15 | * License along with FFmpeg; if not, write to the Free Software
16 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
17 | */
18 |
19 | #ifndef AVUTIL_FILE_H
20 | #define AVUTIL_FILE_H
21 |
22 | #include
23 |
24 | #include "avutil.h"
25 |
26 | /**
27 | * @file
28 | * Misc file utilities.
29 | */
30 |
31 | /**
32 | * Read the file with name filename, and put its content in a newly
33 | * allocated buffer or map it with mmap() when available.
34 | * In case of success set *bufptr to the read or mmapped buffer, and
35 | * *size to the size in bytes of the buffer in *bufptr.
36 | * The returned buffer must be released with av_file_unmap().
37 | *
38 | * @param log_offset loglevel offset used for logging
39 | * @param log_ctx context used for logging
40 | * @return a non negative number in case of success, a negative value
41 | * corresponding to an AVERROR error code in case of failure
42 | */
43 | av_warn_unused_result
44 | int av_file_map(const char *filename, uint8_t **bufptr, size_t *size,
45 | int log_offset, void *log_ctx);
46 |
47 | /**
48 | * Unmap or free the buffer bufptr created by av_file_map().
49 | *
50 | * @param size size in bytes of bufptr, must be the same as returned
51 | * by av_file_map()
52 | */
53 | void av_file_unmap(uint8_t *bufptr, size_t size);
54 |
55 | /**
56 | * Wrapper to work around the lack of mkstemp() on mingw.
57 | * Also, tries to create file in /tmp first, if possible.
58 | * *prefix can be a character constant; *filename will be allocated internally.
59 | * @return file descriptor of opened file (or negative value corresponding to an
60 | * AVERROR code on error)
61 | * and opened file name in **filename.
62 | * @note On very old libcs it is necessary to set a secure umask before
63 | * calling this, av_tempfile() can't call umask itself as it is used in
64 | * libraries and could interfere with the calling application.
65 | * @deprecated as fd numbers cannot be passed saftely between libs on some platforms
66 | */
67 | int av_tempfile(const char *prefix, char **filename, int log_offset, void *log_ctx);
68 |
69 | #endif /* AVUTIL_FILE_H */
70 |
--------------------------------------------------------------------------------
/MILive/MILive/3rd/FFmpeg-iOS/include/libavutil/hmac.h:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2012 Martin Storsjo
3 | *
4 | * This file is part of FFmpeg.
5 | *
6 | * FFmpeg is free software; you can redistribute it and/or
7 | * modify it under the terms of the GNU Lesser General Public
8 | * License as published by the Free Software Foundation; either
9 | * version 2.1 of the License, or (at your option) any later version.
10 | *
11 | * FFmpeg is distributed in the hope that it will be useful,
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 | * Lesser General Public License for more details.
15 | *
16 | * You should have received a copy of the GNU Lesser General Public
17 | * License along with FFmpeg; if not, write to the Free Software
18 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
19 | */
20 |
21 | #ifndef AVUTIL_HMAC_H
22 | #define AVUTIL_HMAC_H
23 |
24 | #include
25 |
26 | #include "version.h"
27 | /**
28 | * @defgroup lavu_hmac HMAC
29 | * @ingroup lavu_crypto
30 | * @{
31 | */
32 |
33 | enum AVHMACType {
34 | AV_HMAC_MD5,
35 | AV_HMAC_SHA1,
36 | AV_HMAC_SHA224,
37 | AV_HMAC_SHA256,
38 | AV_HMAC_SHA384 = 12,
39 | AV_HMAC_SHA512,
40 | };
41 |
42 | typedef struct AVHMAC AVHMAC;
43 |
44 | /**
45 | * Allocate an AVHMAC context.
46 | * @param type The hash function used for the HMAC.
47 | */
48 | AVHMAC *av_hmac_alloc(enum AVHMACType type);
49 |
50 | /**
51 | * Free an AVHMAC context.
52 | * @param ctx The context to free, may be NULL
53 | */
54 | void av_hmac_free(AVHMAC *ctx);
55 |
56 | /**
57 | * Initialize an AVHMAC context with an authentication key.
58 | * @param ctx The HMAC context
59 | * @param key The authentication key
60 | * @param keylen The length of the key, in bytes
61 | */
62 | void av_hmac_init(AVHMAC *ctx, const uint8_t *key, unsigned int keylen);
63 |
64 | /**
65 | * Hash data with the HMAC.
66 | * @param ctx The HMAC context
67 | * @param data The data to hash
68 | * @param len The length of the data, in bytes
69 | */
70 | void av_hmac_update(AVHMAC *ctx, const uint8_t *data, unsigned int len);
71 |
72 | /**
73 | * Finish hashing and output the HMAC digest.
74 | * @param ctx The HMAC context
75 | * @param out The output buffer to write the digest into
76 | * @param outlen The length of the out buffer, in bytes
77 | * @return The number of bytes written to out, or a negative error code.
78 | */
79 | int av_hmac_final(AVHMAC *ctx, uint8_t *out, unsigned int outlen);
80 |
81 | /**
82 | * Hash an array of data with a key.
83 | * @param ctx The HMAC context
84 | * @param data The data to hash
85 | * @param len The length of the data, in bytes
86 | * @param key The authentication key
87 | * @param keylen The length of the key, in bytes
88 | * @param out The output buffer to write the digest into
89 | * @param outlen The length of the out buffer, in bytes
90 | * @return The number of bytes written to out, or a negative error code.
91 | */
92 | int av_hmac_calc(AVHMAC *ctx, const uint8_t *data, unsigned int len,
93 | const uint8_t *key, unsigned int keylen,
94 | uint8_t *out, unsigned int outlen);
95 |
96 | /**
97 | * @}
98 | */
99 |
100 | #endif /* AVUTIL_HMAC_H */
101 |
--------------------------------------------------------------------------------
/MILive/MILive/3rd/FFmpeg-iOS/include/libavutil/hwcontext_cuda.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of FFmpeg.
3 | *
4 | * FFmpeg is free software; you can redistribute it and/or
5 | * modify it under the terms of the GNU Lesser General Public
6 | * License as published by the Free Software Foundation; either
7 | * version 2.1 of the License, or (at your option) any later version.
8 | *
9 | * FFmpeg is distributed in the hope that it will be useful,
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 | * Lesser General Public License for more details.
13 | *
14 | * You should have received a copy of the GNU Lesser General Public
15 | * License along with FFmpeg; if not, write to the Free Software
16 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
17 | */
18 |
19 |
20 | #ifndef AVUTIL_HWCONTEXT_CUDA_H
21 | #define AVUTIL_HWCONTEXT_CUDA_H
22 |
23 | #ifndef CUDA_VERSION
24 | #include
25 | #endif
26 |
27 | #include "pixfmt.h"
28 |
29 | /**
30 | * @file
31 | * An API-specific header for AV_HWDEVICE_TYPE_CUDA.
32 | *
33 | * This API supports dynamic frame pools. AVHWFramesContext.pool must return
34 | * AVBufferRefs whose data pointer is a CUdeviceptr.
35 | */
36 |
37 | typedef struct AVCUDADeviceContextInternal AVCUDADeviceContextInternal;
38 |
39 | /**
40 | * This struct is allocated as AVHWDeviceContext.hwctx
41 | */
42 | typedef struct AVCUDADeviceContext {
43 | CUcontext cuda_ctx;
44 | AVCUDADeviceContextInternal *internal;
45 | } AVCUDADeviceContext;
46 |
47 | /**
48 | * AVHWFramesContext.hwctx is currently not used
49 | */
50 |
51 | #endif /* AVUTIL_HWCONTEXT_CUDA_H */
52 |
--------------------------------------------------------------------------------
/MILive/MILive/3rd/FFmpeg-iOS/include/libavutil/hwcontext_dxva2.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of FFmpeg.
3 | *
4 | * FFmpeg is free software; you can redistribute it and/or
5 | * modify it under the terms of the GNU Lesser General Public
6 | * License as published by the Free Software Foundation; either
7 | * version 2.1 of the License, or (at your option) any later version.
8 | *
9 | * FFmpeg is distributed in the hope that it will be useful,
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 | * Lesser General Public License for more details.
13 | *
14 | * You should have received a copy of the GNU Lesser General Public
15 | * License along with FFmpeg; if not, write to the Free Software
16 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
17 | */
18 |
19 |
20 | #ifndef AVUTIL_HWCONTEXT_DXVA2_H
21 | #define AVUTIL_HWCONTEXT_DXVA2_H
22 |
23 | /**
24 | * @file
25 | * An API-specific header for AV_HWDEVICE_TYPE_DXVA2.
26 | *
27 | * Only fixed-size pools are supported.
28 | *
29 | * For user-allocated pools, AVHWFramesContext.pool must return AVBufferRefs
30 | * with the data pointer set to a pointer to IDirect3DSurface9.
31 | */
32 |
33 | #include
34 | #include
35 |
36 | /**
37 | * This struct is allocated as AVHWDeviceContext.hwctx
38 | */
39 | typedef struct AVDXVA2DeviceContext {
40 | IDirect3DDeviceManager9 *devmgr;
41 | } AVDXVA2DeviceContext;
42 |
43 | /**
44 | * This struct is allocated as AVHWFramesContext.hwctx
45 | */
46 | typedef struct AVDXVA2FramesContext {
47 | /**
48 | * The surface type (e.g. DXVA2_VideoProcessorRenderTarget or
49 | * DXVA2_VideoDecoderRenderTarget). Must be set by the caller.
50 | */
51 | DWORD surface_type;
52 |
53 | /**
54 | * The surface pool. When an external pool is not provided by the caller,
55 | * this will be managed (allocated and filled on init, freed on uninit) by
56 | * libavutil.
57 | */
58 | IDirect3DSurface9 **surfaces;
59 | int nb_surfaces;
60 |
61 | /**
62 | * Certain drivers require the decoder to be destroyed before the surfaces.
63 | * To allow internally managed pools to work properly in such cases, this
64 | * field is provided.
65 | *
66 | * If it is non-NULL, libavutil will call IDirectXVideoDecoder_Release() on
67 | * it just before the internal surface pool is freed.
68 | *
69 | * This is for convenience only. Some code uses other methods to manage the
70 | * decoder reference.
71 | */
72 | IDirectXVideoDecoder *decoder_to_release;
73 | } AVDXVA2FramesContext;
74 |
75 | #endif /* AVUTIL_HWCONTEXT_DXVA2_H */
76 |
--------------------------------------------------------------------------------
/MILive/MILive/3rd/FFmpeg-iOS/include/libavutil/hwcontext_qsv.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of FFmpeg.
3 | *
4 | * FFmpeg is free software; you can redistribute it and/or
5 | * modify it under the terms of the GNU Lesser General Public
6 | * License as published by the Free Software Foundation; either
7 | * version 2.1 of the License, or (at your option) any later version.
8 | *
9 | * FFmpeg is distributed in the hope that it will be useful,
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 | * Lesser General Public License for more details.
13 | *
14 | * You should have received a copy of the GNU Lesser General Public
15 | * License along with FFmpeg; if not, write to the Free Software
16 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
17 | */
18 |
19 | #ifndef AVUTIL_HWCONTEXT_QSV_H
20 | #define AVUTIL_HWCONTEXT_QSV_H
21 |
22 | #include
23 |
24 | /**
25 | * @file
26 | * An API-specific header for AV_HWDEVICE_TYPE_QSV.
27 | *
28 | * This API does not support dynamic frame pools. AVHWFramesContext.pool must
29 | * contain AVBufferRefs whose data pointer points to an mfxFrameSurface1 struct.
30 | */
31 |
32 | /**
33 | * This struct is allocated as AVHWDeviceContext.hwctx
34 | */
35 | typedef struct AVQSVDeviceContext {
36 | mfxSession session;
37 | } AVQSVDeviceContext;
38 |
39 | /**
40 | * This struct is allocated as AVHWFramesContext.hwctx
41 | */
42 | typedef struct AVQSVFramesContext {
43 | mfxFrameSurface1 *surfaces;
44 | int nb_surfaces;
45 |
46 | /**
47 | * A combination of MFX_MEMTYPE_* describing the frame pool.
48 | */
49 | int frame_type;
50 | } AVQSVFramesContext;
51 |
52 | #endif /* AVUTIL_HWCONTEXT_QSV_H */
53 |
54 |
--------------------------------------------------------------------------------
/MILive/MILive/3rd/FFmpeg-iOS/include/libavutil/hwcontext_vdpau.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of FFmpeg.
3 | *
4 | * FFmpeg is free software; you can redistribute it and/or
5 | * modify it under the terms of the GNU Lesser General Public
6 | * License as published by the Free Software Foundation; either
7 | * version 2.1 of the License, or (at your option) any later version.
8 | *
9 | * FFmpeg is distributed in the hope that it will be useful,
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 | * Lesser General Public License for more details.
13 | *
14 | * You should have received a copy of the GNU Lesser General Public
15 | * License along with FFmpeg; if not, write to the Free Software
16 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
17 | */
18 |
19 | #ifndef AVUTIL_HWCONTEXT_VDPAU_H
20 | #define AVUTIL_HWCONTEXT_VDPAU_H
21 |
22 | #include
23 |
24 | /**
25 | * @file
26 | * An API-specific header for AV_HWDEVICE_TYPE_VDPAU.
27 | *
28 | * This API supports dynamic frame pools. AVHWFramesContext.pool must return
29 | * AVBufferRefs whose data pointer is a VdpVideoSurface.
30 | */
31 |
32 | /**
33 | * This struct is allocated as AVHWDeviceContext.hwctx
34 | */
35 | typedef struct AVVDPAUDeviceContext {
36 | VdpDevice device;
37 | VdpGetProcAddress *get_proc_address;
38 | } AVVDPAUDeviceContext;
39 |
40 | /**
41 | * AVHWFramesContext.hwctx is currently not used
42 | */
43 |
44 | #endif /* AVUTIL_HWCONTEXT_VDPAU_H */
45 |
--------------------------------------------------------------------------------
/MILive/MILive/3rd/FFmpeg-iOS/include/libavutil/hwcontext_videotoolbox.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of FFmpeg.
3 | *
4 | * FFmpeg is free software; you can redistribute it and/or
5 | * modify it under the terms of the GNU Lesser General Public
6 | * License as published by the Free Software Foundation; either
7 | * version 2.1 of the License, or (at your option) any later version.
8 | *
9 | * FFmpeg is distributed in the hope that it will be useful,
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 | * Lesser General Public License for more details.
13 | *
14 | * You should have received a copy of the GNU Lesser General Public
15 | * License along with FFmpeg; if not, write to the Free Software
16 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
17 | */
18 |
19 | #ifndef AVUTIL_HWCONTEXT_VIDEOTOOLBOX_H
20 | #define AVUTIL_HWCONTEXT_VIDEOTOOLBOX_H
21 |
22 | #include
23 |
24 | #include
25 |
26 | #include "pixfmt.h"
27 |
28 | /**
29 | * @file
30 | * An API-specific header for AV_HWDEVICE_TYPE_VIDEOTOOLBOX.
31 | *
32 | * This API currently does not support frame allocation, as the raw VideoToolbox
33 | * API does allocation, and FFmpeg itself never has the need to allocate frames.
34 | *
35 | * If the API user sets a custom pool, AVHWFramesContext.pool must return
36 | * AVBufferRefs whose data pointer is a CVImageBufferRef or CVPixelBufferRef.
37 | *
38 | * Currently AVHWDeviceContext.hwctx and AVHWFramesContext.hwctx are always
39 | * NULL.
40 | */
41 |
42 | /**
43 | * Convert a VideoToolbox (actually CoreVideo) format to AVPixelFormat.
44 | * Returns AV_PIX_FMT_NONE if no known equivalent was found.
45 | */
46 | enum AVPixelFormat av_map_videotoolbox_format_to_pixfmt(uint32_t cv_fmt);
47 |
48 | /**
49 | * Convert an AVPixelFormat to a VideoToolbox (actually CoreVideo) format.
50 | * Returns 0 if no known equivalent was found.
51 | */
52 | uint32_t av_map_videotoolbox_format_from_pixfmt(enum AVPixelFormat pix_fmt);
53 |
54 | #endif /* AVUTIL_HWCONTEXT_VIDEOTOOLBOX_H */
55 |
--------------------------------------------------------------------------------
/MILive/MILive/3rd/FFmpeg-iOS/include/libavutil/intfloat.h:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2011 Mans Rullgard
3 | *
4 | * This file is part of FFmpeg.
5 | *
6 | * FFmpeg is free software; you can redistribute it and/or
7 | * modify it under the terms of the GNU Lesser General Public
8 | * License as published by the Free Software Foundation; either
9 | * version 2.1 of the License, or (at your option) any later version.
10 | *
11 | * FFmpeg is distributed in the hope that it will be useful,
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 | * Lesser General Public License for more details.
15 | *
16 | * You should have received a copy of the GNU Lesser General Public
17 | * License along with FFmpeg; if not, write to the Free Software
18 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
19 | */
20 |
21 | #ifndef AVUTIL_INTFLOAT_H
22 | #define AVUTIL_INTFLOAT_H
23 |
24 | #include
25 | #include "attributes.h"
26 |
27 | union av_intfloat32 {
28 | uint32_t i;
29 | float f;
30 | };
31 |
32 | union av_intfloat64 {
33 | uint64_t i;
34 | double f;
35 | };
36 |
37 | /**
38 | * Reinterpret a 32-bit integer as a float.
39 | */
40 | static av_always_inline float av_int2float(uint32_t i)
41 | {
42 | union av_intfloat32 v;
43 | v.i = i;
44 | return v.f;
45 | }
46 |
47 | /**
48 | * Reinterpret a float as a 32-bit integer.
49 | */
50 | static av_always_inline uint32_t av_float2int(float f)
51 | {
52 | union av_intfloat32 v;
53 | v.f = f;
54 | return v.i;
55 | }
56 |
57 | /**
58 | * Reinterpret a 64-bit integer as a double.
59 | */
60 | static av_always_inline double av_int2double(uint64_t i)
61 | {
62 | union av_intfloat64 v;
63 | v.i = i;
64 | return v.f;
65 | }
66 |
67 | /**
68 | * Reinterpret a double as a 64-bit integer.
69 | */
70 | static av_always_inline uint64_t av_double2int(double f)
71 | {
72 | union av_intfloat64 v;
73 | v.f = f;
74 | return v.i;
75 | }
76 |
77 | #endif /* AVUTIL_INTFLOAT_H */
78 |
--------------------------------------------------------------------------------
/MILive/MILive/3rd/FFmpeg-iOS/include/libavutil/lfg.h:
--------------------------------------------------------------------------------
1 | /*
2 | * Lagged Fibonacci PRNG
3 | * Copyright (c) 2008 Michael Niedermayer
4 | *
5 | * This file is part of FFmpeg.
6 | *
7 | * FFmpeg is free software; you can redistribute it and/or
8 | * modify it under the terms of the GNU Lesser General Public
9 | * License as published by the Free Software Foundation; either
10 | * version 2.1 of the License, or (at your option) any later version.
11 | *
12 | * FFmpeg is distributed in the hope that it will be useful,
13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 | * Lesser General Public License for more details.
16 | *
17 | * You should have received a copy of the GNU Lesser General Public
18 | * License along with FFmpeg; if not, write to the Free Software
19 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20 | */
21 |
22 | #ifndef AVUTIL_LFG_H
23 | #define AVUTIL_LFG_H
24 |
25 | #include
26 |
27 | typedef struct AVLFG {
28 | unsigned int state[64];
29 | int index;
30 | } AVLFG;
31 |
32 | void av_lfg_init(AVLFG *c, unsigned int seed);
33 |
34 | /**
35 | * Seed the state of the ALFG using binary data.
36 | *
37 | * Return value: 0 on success, negative value (AVERROR) on failure.
38 | */
39 | int av_lfg_init_from_data(AVLFG *c, const uint8_t *data, unsigned int length);
40 |
41 | /**
42 | * Get the next random unsigned 32-bit number using an ALFG.
43 | *
44 | * Please also consider a simple LCG like state= state*1664525+1013904223,
45 | * it may be good enough and faster for your specific use case.
46 | */
47 | static inline unsigned int av_lfg_get(AVLFG *c){
48 | c->state[c->index & 63] = c->state[(c->index-24) & 63] + c->state[(c->index-55) & 63];
49 | return c->state[c->index++ & 63];
50 | }
51 |
52 | /**
53 | * Get the next random unsigned 32-bit number using a MLFG.
54 | *
55 | * Please also consider av_lfg_get() above, it is faster.
56 | */
57 | static inline unsigned int av_mlfg_get(AVLFG *c){
58 | unsigned int a= c->state[(c->index-55) & 63];
59 | unsigned int b= c->state[(c->index-24) & 63];
60 | return c->state[c->index++ & 63] = 2*a*b+a+b;
61 | }
62 |
63 | /**
64 | * Get the next two numbers generated by a Box-Muller Gaussian
65 | * generator using the random numbers issued by lfg.
66 | *
67 | * @param out array where the two generated numbers are placed
68 | */
69 | void av_bmg_get(AVLFG *lfg, double out[2]);
70 |
71 | #endif /* AVUTIL_LFG_H */
72 |
--------------------------------------------------------------------------------
/MILive/MILive/3rd/FFmpeg-iOS/include/libavutil/lzo.h:
--------------------------------------------------------------------------------
1 | /*
2 | * LZO 1x decompression
3 | * copyright (c) 2006 Reimar Doeffinger
4 | *
5 | * This file is part of FFmpeg.
6 | *
7 | * FFmpeg is free software; you can redistribute it and/or
8 | * modify it under the terms of the GNU Lesser General Public
9 | * License as published by the Free Software Foundation; either
10 | * version 2.1 of the License, or (at your option) any later version.
11 | *
12 | * FFmpeg is distributed in the hope that it will be useful,
13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 | * Lesser General Public License for more details.
16 | *
17 | * You should have received a copy of the GNU Lesser General Public
18 | * License along with FFmpeg; if not, write to the Free Software
19 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20 | */
21 |
22 | #ifndef AVUTIL_LZO_H
23 | #define AVUTIL_LZO_H
24 |
25 | /**
26 | * @defgroup lavu_lzo LZO
27 | * @ingroup lavu_crypto
28 | *
29 | * @{
30 | */
31 |
32 | #include
33 |
34 | /** @name Error flags returned by av_lzo1x_decode
35 | * @{ */
36 | /// end of the input buffer reached before decoding finished
37 | #define AV_LZO_INPUT_DEPLETED 1
38 | /// decoded data did not fit into output buffer
39 | #define AV_LZO_OUTPUT_FULL 2
40 | /// a reference to previously decoded data was wrong
41 | #define AV_LZO_INVALID_BACKPTR 4
42 | /// a non-specific error in the compressed bitstream
43 | #define AV_LZO_ERROR 8
44 | /** @} */
45 |
46 | #define AV_LZO_INPUT_PADDING 8
47 | #define AV_LZO_OUTPUT_PADDING 12
48 |
49 | /**
50 | * @brief Decodes LZO 1x compressed data.
51 | * @param out output buffer
52 | * @param outlen size of output buffer, number of bytes left are returned here
53 | * @param in input buffer
54 | * @param inlen size of input buffer, number of bytes left are returned here
55 | * @return 0 on success, otherwise a combination of the error flags above
56 | *
57 | * Make sure all buffers are appropriately padded, in must provide
58 | * AV_LZO_INPUT_PADDING, out must provide AV_LZO_OUTPUT_PADDING additional bytes.
59 | */
60 | int av_lzo1x_decode(void *out, int *outlen, const void *in, int *inlen);
61 |
62 | /**
63 | * @}
64 | */
65 |
66 | #endif /* AVUTIL_LZO_H */
67 |
--------------------------------------------------------------------------------
/MILive/MILive/3rd/FFmpeg-iOS/include/libavutil/macros.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of FFmpeg.
3 | *
4 | * FFmpeg is free software; you can redistribute it and/or
5 | * modify it under the terms of the GNU Lesser General Public
6 | * License as published by the Free Software Foundation; either
7 | * version 2.1 of the License, or (at your option) any later version.
8 | *
9 | * FFmpeg is distributed in the hope that it will be useful,
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 | * Lesser General Public License for more details.
13 | *
14 | * You should have received a copy of the GNU Lesser General Public
15 | * License along with FFmpeg; if not, write to the Free Software
16 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
17 | */
18 |
19 | /**
20 | * @file
21 | * @ingroup lavu
22 | * Utility Preprocessor macros
23 | */
24 |
25 | #ifndef AVUTIL_MACROS_H
26 | #define AVUTIL_MACROS_H
27 |
28 | /**
29 | * @addtogroup preproc_misc Preprocessor String Macros
30 | *
31 | * String manipulation macros
32 | *
33 | * @{
34 | */
35 |
36 | #define AV_STRINGIFY(s) AV_TOSTRING(s)
37 | #define AV_TOSTRING(s) #s
38 |
39 | #define AV_GLUE(a, b) a ## b
40 | #define AV_JOIN(a, b) AV_GLUE(a, b)
41 |
42 | /**
43 | * @}
44 | */
45 |
46 | #define AV_PRAGMA(s) _Pragma(#s)
47 |
48 | #define FFALIGN(x, a) (((x)+(a)-1)&~((a)-1))
49 |
50 | #endif /* AVUTIL_MACROS_H */
51 |
--------------------------------------------------------------------------------
/MILive/MILive/3rd/FFmpeg-iOS/include/libavutil/md5.h:
--------------------------------------------------------------------------------
1 | /*
2 | * copyright (c) 2006 Michael Niedermayer
3 | *
4 | * This file is part of FFmpeg.
5 | *
6 | * FFmpeg is free software; you can redistribute it and/or
7 | * modify it under the terms of the GNU Lesser General Public
8 | * License as published by the Free Software Foundation; either
9 | * version 2.1 of the License, or (at your option) any later version.
10 | *
11 | * FFmpeg is distributed in the hope that it will be useful,
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 | * Lesser General Public License for more details.
15 | *
16 | * You should have received a copy of the GNU Lesser General Public
17 | * License along with FFmpeg; if not, write to the Free Software
18 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
19 | */
20 |
21 | /**
22 | * @file
23 | * @ingroup lavu_md5
24 | * Public header for MD5 hash function implementation.
25 | */
26 |
27 | #ifndef AVUTIL_MD5_H
28 | #define AVUTIL_MD5_H
29 |
30 | #include
31 | #include
32 |
33 | #include "attributes.h"
34 | #include "version.h"
35 |
36 | /**
37 | * @defgroup lavu_md5 MD5
38 | * @ingroup lavu_hash
39 | * MD5 hash function implementation.
40 | *
41 | * @{
42 | */
43 |
44 | extern const int av_md5_size;
45 |
46 | struct AVMD5;
47 |
48 | /**
49 | * Allocate an AVMD5 context.
50 | */
51 | struct AVMD5 *av_md5_alloc(void);
52 |
53 | /**
54 | * Initialize MD5 hashing.
55 | *
56 | * @param ctx pointer to the function context (of size av_md5_size)
57 | */
58 | void av_md5_init(struct AVMD5 *ctx);
59 |
60 | /**
61 | * Update hash value.
62 | *
63 | * @param ctx hash function context
64 | * @param src input data to update hash with
65 | * @param len input data length
66 | */
67 | #if FF_API_CRYPTO_SIZE_T
68 | void av_md5_update(struct AVMD5 *ctx, const uint8_t *src, int len);
69 | #else
70 | void av_md5_update(struct AVMD5 *ctx, const uint8_t *src, size_t len);
71 | #endif
72 |
73 | /**
74 | * Finish hashing and output digest value.
75 | *
76 | * @param ctx hash function context
77 | * @param dst buffer where output digest value is stored
78 | */
79 | void av_md5_final(struct AVMD5 *ctx, uint8_t *dst);
80 |
81 | /**
82 | * Hash an array of data.
83 | *
84 | * @param dst The output buffer to write the digest into
85 | * @param src The data to hash
86 | * @param len The length of the data, in bytes
87 | */
88 | #if FF_API_CRYPTO_SIZE_T
89 | void av_md5_sum(uint8_t *dst, const uint8_t *src, const int len);
90 | #else
91 | void av_md5_sum(uint8_t *dst, const uint8_t *src, size_t len);
92 | #endif
93 |
94 | /**
95 | * @}
96 | */
97 |
98 | #endif /* AVUTIL_MD5_H */
99 |
--------------------------------------------------------------------------------
/MILive/MILive/3rd/FFmpeg-iOS/include/libavutil/motion_vector.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of FFmpeg.
3 | *
4 | * FFmpeg is free software; you can redistribute it and/or
5 | * modify it under the terms of the GNU Lesser General Public
6 | * License as published by the Free Software Foundation; either
7 | * version 2.1 of the License, or (at your option) any later version.
8 | *
9 | * FFmpeg is distributed in the hope that it will be useful,
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 | * Lesser General Public License for more details.
13 | *
14 | * You should have received a copy of the GNU Lesser General Public
15 | * License along with FFmpeg; if not, write to the Free Software
16 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
17 | */
18 |
19 | #ifndef AVUTIL_MOTION_VECTOR_H
20 | #define AVUTIL_MOTION_VECTOR_H
21 |
22 | #include
23 |
24 | typedef struct AVMotionVector {
25 | /**
26 | * Where the current macroblock comes from; negative value when it comes
27 | * from the past, positive value when it comes from the future.
28 | * XXX: set exact relative ref frame reference instead of a +/- 1 "direction".
29 | */
30 | int32_t source;
31 | /**
32 | * Width and height of the block.
33 | */
34 | uint8_t w, h;
35 | /**
36 | * Absolute source position. Can be outside the frame area.
37 | */
38 | int16_t src_x, src_y;
39 | /**
40 | * Absolute destination position. Can be outside the frame area.
41 | */
42 | int16_t dst_x, dst_y;
43 | /**
44 | * Extra flag information.
45 | * Currently unused.
46 | */
47 | uint64_t flags;
48 | /**
49 | * Motion vector
50 | * src_x = dst_x + motion_x / motion_scale
51 | * src_y = dst_y + motion_y / motion_scale
52 | */
53 | int32_t motion_x, motion_y;
54 | uint16_t motion_scale;
55 | } AVMotionVector;
56 |
57 | #endif /* AVUTIL_MOTION_VECTOR_H */
58 |
--------------------------------------------------------------------------------
/MILive/MILive/3rd/FFmpeg-iOS/include/libavutil/pixelutils.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of FFmpeg.
3 | *
4 | * FFmpeg is free software; you can redistribute it and/or
5 | * modify it under the terms of the GNU Lesser General Public
6 | * License as published by the Free Software Foundation; either
7 | * version 2.1 of the License, or (at your option) any later version.
8 | *
9 | * FFmpeg is distributed in the hope that it will be useful,
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 | * Lesser General Public License for more details.
13 | *
14 | * You should have received a copy of the GNU Lesser General Public
15 | * License along with FFmpeg; if not, write to the Free Software
16 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
17 | */
18 |
19 | #ifndef AVUTIL_PIXELUTILS_H
20 | #define AVUTIL_PIXELUTILS_H
21 |
22 | #include
23 | #include
24 | #include "common.h"
25 |
26 | /**
27 | * Sum of abs(src1[x] - src2[x])
28 | */
29 | typedef int (*av_pixelutils_sad_fn)(const uint8_t *src1, ptrdiff_t stride1,
30 | const uint8_t *src2, ptrdiff_t stride2);
31 |
32 | /**
33 | * Get a potentially optimized pointer to a Sum-of-absolute-differences
34 | * function (see the av_pixelutils_sad_fn prototype).
35 | *
36 | * @param w_bits 1<
3 | *
4 | * This file is part of FFmpeg.
5 | *
6 | * FFmpeg is free software; you can redistribute it and/or
7 | * modify it under the terms of the GNU Lesser General Public
8 | * License as published by the Free Software Foundation; either
9 | * version 2.1 of the License, or (at your option) any later version.
10 | *
11 | * FFmpeg is distributed in the hope that it will be useful,
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 | * Lesser General Public License for more details.
15 | *
16 | * You should have received a copy of the GNU Lesser General Public
17 | * License along with FFmpeg; if not, write to the Free Software
18 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
19 | */
20 |
21 | #ifndef AVUTIL_RANDOM_SEED_H
22 | #define AVUTIL_RANDOM_SEED_H
23 |
24 | #include
25 | /**
26 | * @addtogroup lavu_crypto
27 | * @{
28 | */
29 |
30 | /**
31 | * Get a seed to use in conjunction with random functions.
32 | * This function tries to provide a good seed at a best effort bases.
33 | * Its possible to call this function multiple times if more bits are needed.
34 | * It can be quite slow, which is why it should only be used as seed for a faster
35 | * PRNG. The quality of the seed depends on the platform.
36 | */
37 | uint32_t av_get_random_seed(void);
38 |
39 | /**
40 | * @}
41 | */
42 |
43 | #endif /* AVUTIL_RANDOM_SEED_H */
44 |
--------------------------------------------------------------------------------
/MILive/MILive/3rd/FFmpeg-iOS/include/libavutil/rc4.h:
--------------------------------------------------------------------------------
1 | /*
2 | * RC4 encryption/decryption/pseudo-random number generator
3 | *
4 | * This file is part of FFmpeg.
5 | *
6 | * FFmpeg is free software; you can redistribute it and/or
7 | * modify it under the terms of the GNU Lesser General Public
8 | * License as published by the Free Software Foundation; either
9 | * version 2.1 of the License, or (at your option) any later version.
10 | *
11 | * FFmpeg is distributed in the hope that it will be useful,
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 | * Lesser General Public License for more details.
15 | *
16 | * You should have received a copy of the GNU Lesser General Public
17 | * License along with FFmpeg; if not, write to the Free Software
18 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
19 | */
20 |
21 | #ifndef AVUTIL_RC4_H
22 | #define AVUTIL_RC4_H
23 |
24 | #include
25 |
26 | /**
27 | * @defgroup lavu_rc4 RC4
28 | * @ingroup lavu_crypto
29 | * @{
30 | */
31 |
32 | typedef struct AVRC4 {
33 | uint8_t state[256];
34 | int x, y;
35 | } AVRC4;
36 |
37 | /**
38 | * Allocate an AVRC4 context.
39 | */
40 | AVRC4 *av_rc4_alloc(void);
41 |
42 | /**
43 | * @brief Initializes an AVRC4 context.
44 | *
45 | * @param key_bits must be a multiple of 8
46 | * @param decrypt 0 for encryption, 1 for decryption, currently has no effect
47 | * @return zero on success, negative value otherwise
48 | */
49 | int av_rc4_init(struct AVRC4 *d, const uint8_t *key, int key_bits, int decrypt);
50 |
51 | /**
52 | * @brief Encrypts / decrypts using the RC4 algorithm.
53 | *
54 | * @param count number of bytes
55 | * @param dst destination array, can be equal to src
56 | * @param src source array, can be equal to dst, may be NULL
57 | * @param iv not (yet) used for RC4, should be NULL
58 | * @param decrypt 0 for encryption, 1 for decryption, not (yet) used
59 | */
60 | void av_rc4_crypt(struct AVRC4 *d, uint8_t *dst, const uint8_t *src, int count, uint8_t *iv, int decrypt);
61 |
62 | /**
63 | * @}
64 | */
65 |
66 | #endif /* AVUTIL_RC4_H */
67 |
--------------------------------------------------------------------------------
/MILive/MILive/3rd/FFmpeg-iOS/include/libavutil/replaygain.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of FFmpeg.
3 | *
4 | * FFmpeg is free software; you can redistribute it and/or
5 | * modify it under the terms of the GNU Lesser General Public
6 | * License as published by the Free Software Foundation; either
7 | * version 2.1 of the License, or (at your option) any later version.
8 | *
9 | * FFmpeg is distributed in the hope that it will be useful,
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 | * Lesser General Public License for more details.
13 | *
14 | * You should have received a copy of the GNU Lesser General Public
15 | * License along with FFmpeg; if not, write to the Free Software
16 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
17 | */
18 |
19 | #ifndef AVUTIL_REPLAYGAIN_H
20 | #define AVUTIL_REPLAYGAIN_H
21 |
22 | #include
23 |
24 | /**
25 | * ReplayGain information (see
26 | * http://wiki.hydrogenaudio.org/index.php?title=ReplayGain_1.0_specification).
27 | * The size of this struct is a part of the public ABI.
28 | */
29 | typedef struct AVReplayGain {
30 | /**
31 | * Track replay gain in microbels (divide by 100000 to get the value in dB).
32 | * Should be set to INT32_MIN when unknown.
33 | */
34 | int32_t track_gain;
35 | /**
36 | * Peak track amplitude, with 100000 representing full scale (but values
37 | * may overflow). 0 when unknown.
38 | */
39 | uint32_t track_peak;
40 | /**
41 | * Same as track_gain, but for the whole album.
42 | */
43 | int32_t album_gain;
44 | /**
45 | * Same as track_peak, but for the whole album,
46 | */
47 | uint32_t album_peak;
48 | } AVReplayGain;
49 |
50 | #endif /* AVUTIL_REPLAYGAIN_H */
51 |
--------------------------------------------------------------------------------
/MILive/MILive/3rd/FFmpeg-iOS/include/libavutil/ripemd.h:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2007 Michael Niedermayer
3 | * Copyright (C) 2013 James Almer
4 | *
5 | * This file is part of FFmpeg.
6 | *
7 | * FFmpeg is free software; you can redistribute it and/or
8 | * modify it under the terms of the GNU Lesser General Public
9 | * License as published by the Free Software Foundation; either
10 | * version 2.1 of the License, or (at your option) any later version.
11 | *
12 | * FFmpeg is distributed in the hope that it will be useful,
13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 | * Lesser General Public License for more details.
16 | *
17 | * You should have received a copy of the GNU Lesser General Public
18 | * License along with FFmpeg; if not, write to the Free Software
19 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20 | */
21 |
22 | /**
23 | * @file
24 | * @ingroup lavu_ripemd
25 | * Public header for RIPEMD hash function implementation.
26 | */
27 |
28 | #ifndef AVUTIL_RIPEMD_H
29 | #define AVUTIL_RIPEMD_H
30 |
31 | #include
32 |
33 | #include "attributes.h"
34 | #include "version.h"
35 |
36 | /**
37 | * @defgroup lavu_ripemd RIPEMD
38 | * @ingroup lavu_hash
39 | * RIPEMD hash function implementation.
40 | *
41 | * @{
42 | */
43 |
44 | extern const int av_ripemd_size;
45 |
46 | struct AVRIPEMD;
47 |
48 | /**
49 | * Allocate an AVRIPEMD context.
50 | */
51 | struct AVRIPEMD *av_ripemd_alloc(void);
52 |
53 | /**
54 | * Initialize RIPEMD hashing.
55 | *
56 | * @param context pointer to the function context (of size av_ripemd_size)
57 | * @param bits number of bits in digest (128, 160, 256 or 320 bits)
58 | * @return zero if initialization succeeded, -1 otherwise
59 | */
60 | int av_ripemd_init(struct AVRIPEMD* context, int bits);
61 |
62 | /**
63 | * Update hash value.
64 | *
65 | * @param context hash function context
66 | * @param data input data to update hash with
67 | * @param len input data length
68 | */
69 | void av_ripemd_update(struct AVRIPEMD* context, const uint8_t* data, unsigned int len);
70 |
71 | /**
72 | * Finish hashing and output digest value.
73 | *
74 | * @param context hash function context
75 | * @param digest buffer where output digest value is stored
76 | */
77 | void av_ripemd_final(struct AVRIPEMD* context, uint8_t *digest);
78 |
79 | /**
80 | * @}
81 | */
82 |
83 | #endif /* AVUTIL_RIPEMD_H */
84 |
--------------------------------------------------------------------------------
/MILive/MILive/3rd/FFmpeg-iOS/include/libavutil/sha.h:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2007 Michael Niedermayer
3 | *
4 | * This file is part of FFmpeg.
5 | *
6 | * FFmpeg is free software; you can redistribute it and/or
7 | * modify it under the terms of the GNU Lesser General Public
8 | * License as published by the Free Software Foundation; either
9 | * version 2.1 of the License, or (at your option) any later version.
10 | *
11 | * FFmpeg is distributed in the hope that it will be useful,
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 | * Lesser General Public License for more details.
15 | *
16 | * You should have received a copy of the GNU Lesser General Public
17 | * License along with FFmpeg; if not, write to the Free Software
18 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
19 | */
20 |
21 | /**
22 | * @file
23 | * @ingroup lavu_sha
24 | * Public header for SHA-1 & SHA-256 hash function implementations.
25 | */
26 |
27 | #ifndef AVUTIL_SHA_H
28 | #define AVUTIL_SHA_H
29 |
30 | #include
31 | #include
32 |
33 | #include "attributes.h"
34 | #include "version.h"
35 |
36 | /**
37 | * @defgroup lavu_sha SHA
38 | * @ingroup lavu_hash
39 | * SHA-1 and SHA-256 (Secure Hash Algorithm) hash function implementations.
40 | *
41 | * This module supports the following SHA hash functions:
42 | *
43 | * - SHA-1: 160 bits
44 | * - SHA-224: 224 bits, as a variant of SHA-2
45 | * - SHA-256: 256 bits, as a variant of SHA-2
46 | *
47 | * @see For SHA-384, SHA-512, and variants thereof, see @ref lavu_sha512.
48 | *
49 | * @{
50 | */
51 |
52 | extern const int av_sha_size;
53 |
54 | struct AVSHA;
55 |
56 | /**
57 | * Allocate an AVSHA context.
58 | */
59 | struct AVSHA *av_sha_alloc(void);
60 |
61 | /**
62 | * Initialize SHA-1 or SHA-2 hashing.
63 | *
64 | * @param context pointer to the function context (of size av_sha_size)
65 | * @param bits number of bits in digest (SHA-1 - 160 bits, SHA-2 224 or 256 bits)
66 | * @return zero if initialization succeeded, -1 otherwise
67 | */
68 | int av_sha_init(struct AVSHA* context, int bits);
69 |
70 | /**
71 | * Update hash value.
72 | *
73 | * @param ctx hash function context
74 | * @param data input data to update hash with
75 | * @param len input data length
76 | */
77 | #if FF_API_CRYPTO_SIZE_T
78 | void av_sha_update(struct AVSHA *ctx, const uint8_t *data, unsigned int len);
79 | #else
80 | void av_sha_update(struct AVSHA *ctx, const uint8_t *data, size_t len);
81 | #endif
82 |
83 | /**
84 | * Finish hashing and output digest value.
85 | *
86 | * @param context hash function context
87 | * @param digest buffer where output digest value is stored
88 | */
89 | void av_sha_final(struct AVSHA* context, uint8_t *digest);
90 |
91 | /**
92 | * @}
93 | */
94 |
95 | #endif /* AVUTIL_SHA_H */
96 |
--------------------------------------------------------------------------------
/MILive/MILive/3rd/FFmpeg-iOS/include/libavutil/sha512.h:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2007 Michael Niedermayer
3 | * Copyright (C) 2013 James Almer
4 | *
5 | * This file is part of FFmpeg.
6 | *
7 | * FFmpeg is free software; you can redistribute it and/or
8 | * modify it under the terms of the GNU Lesser General Public
9 | * License as published by the Free Software Foundation; either
10 | * version 2.1 of the License, or (at your option) any later version.
11 | *
12 | * FFmpeg is distributed in the hope that it will be useful,
13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 | * Lesser General Public License for more details.
16 | *
17 | * You should have received a copy of the GNU Lesser General Public
18 | * License along with FFmpeg; if not, write to the Free Software
19 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20 | */
21 |
22 | /**
23 | * @file
24 | * @ingroup lavu_sha512
25 | * Public header for SHA-512 implementation.
26 | */
27 |
28 | #ifndef AVUTIL_SHA512_H
29 | #define AVUTIL_SHA512_H
30 |
31 | #include
32 | #include
33 |
34 | #include "attributes.h"
35 | #include "version.h"
36 |
37 | /**
38 | * @defgroup lavu_sha512 SHA-512
39 | * @ingroup lavu_hash
40 | * SHA-512 (Secure Hash Algorithm) hash function implementations.
41 | *
42 | * This module supports the following SHA-2 hash functions:
43 | *
44 | * - SHA-512/224: 224 bits
45 | * - SHA-512/256: 256 bits
46 | * - SHA-384: 384 bits
47 | * - SHA-512: 512 bits
48 | *
49 | * @see For SHA-1, SHA-256, and variants thereof, see @ref lavu_sha.
50 | *
51 | * @{
52 | */
53 |
54 | extern const int av_sha512_size;
55 |
56 | struct AVSHA512;
57 |
58 | /**
59 | * Allocate an AVSHA512 context.
60 | */
61 | struct AVSHA512 *av_sha512_alloc(void);
62 |
63 | /**
64 | * Initialize SHA-2 512 hashing.
65 | *
66 | * @param context pointer to the function context (of size av_sha512_size)
67 | * @param bits number of bits in digest (224, 256, 384 or 512 bits)
68 | * @return zero if initialization succeeded, -1 otherwise
69 | */
70 | int av_sha512_init(struct AVSHA512* context, int bits);
71 |
72 | /**
73 | * Update hash value.
74 | *
75 | * @param context hash function context
76 | * @param data input data to update hash with
77 | * @param len input data length
78 | */
79 | #if FF_API_CRYPTO_SIZE_T
80 | void av_sha512_update(struct AVSHA512* context, const uint8_t* data, unsigned int len);
81 | #else
82 | void av_sha512_update(struct AVSHA512* context, const uint8_t* data, size_t len);
83 | #endif
84 |
85 | /**
86 | * Finish hashing and output digest value.
87 | *
88 | * @param context hash function context
89 | * @param digest buffer where output digest value is stored
90 | */
91 | void av_sha512_final(struct AVSHA512* context, uint8_t *digest);
92 |
93 | /**
94 | * @}
95 | */
96 |
97 | #endif /* AVUTIL_SHA512_H */
98 |
--------------------------------------------------------------------------------
/MILive/MILive/3rd/FFmpeg-iOS/include/libavutil/tea.h:
--------------------------------------------------------------------------------
1 | /*
2 | * A 32-bit implementation of the TEA algorithm
3 | * Copyright (c) 2015 Vesselin Bontchev
4 | *
5 | * This file is part of FFmpeg.
6 | *
7 | * FFmpeg is free software; you can redistribute it and/or
8 | * modify it under the terms of the GNU Lesser General Public
9 | * License as published by the Free Software Foundation; either
10 | * version 2.1 of the License, or (at your option) any later version.
11 | *
12 | * FFmpeg is distributed in the hope that it will be useful,
13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 | * Lesser General Public License for more details.
16 | *
17 | * You should have received a copy of the GNU Lesser General Public
18 | * License along with FFmpeg; if not, write to the Free Software
19 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20 | */
21 |
22 | #ifndef AVUTIL_TEA_H
23 | #define AVUTIL_TEA_H
24 |
25 | #include
26 |
27 | /**
28 | * @file
29 | * @brief Public header for libavutil TEA algorithm
30 | * @defgroup lavu_tea TEA
31 | * @ingroup lavu_crypto
32 | * @{
33 | */
34 |
35 | extern const int av_tea_size;
36 |
37 | struct AVTEA;
38 |
39 | /**
40 | * Allocate an AVTEA context
41 | * To free the struct: av_free(ptr)
42 | */
43 | struct AVTEA *av_tea_alloc(void);
44 |
45 | /**
46 | * Initialize an AVTEA context.
47 | *
48 | * @param ctx an AVTEA context
49 | * @param key a key of 16 bytes used for encryption/decryption
50 | * @param rounds the number of rounds in TEA (64 is the "standard")
51 | */
52 | void av_tea_init(struct AVTEA *ctx, const uint8_t key[16], int rounds);
53 |
54 | /**
55 | * Encrypt or decrypt a buffer using a previously initialized context.
56 | *
57 | * @param ctx an AVTEA context
58 | * @param dst destination array, can be equal to src
59 | * @param src source array, can be equal to dst
60 | * @param count number of 8 byte blocks
61 | * @param iv initialization vector for CBC mode, if NULL then ECB will be used
62 | * @param decrypt 0 for encryption, 1 for decryption
63 | */
64 | void av_tea_crypt(struct AVTEA *ctx, uint8_t *dst, const uint8_t *src,
65 | int count, uint8_t *iv, int decrypt);
66 |
67 | /**
68 | * @}
69 | */
70 |
71 | #endif /* AVUTIL_TEA_H */
72 |
--------------------------------------------------------------------------------
/MILive/MILive/3rd/FFmpeg-iOS/include/libavutil/time.h:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2000-2003 Fabrice Bellard
3 | *
4 | * This file is part of FFmpeg.
5 | *
6 | * FFmpeg is free software; you can redistribute it and/or
7 | * modify it under the terms of the GNU Lesser General Public
8 | * License as published by the Free Software Foundation; either
9 | * version 2.1 of the License, or (at your option) any later version.
10 | *
11 | * FFmpeg is distributed in the hope that it will be useful,
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 | * Lesser General Public License for more details.
15 | *
16 | * You should have received a copy of the GNU Lesser General Public
17 | * License along with FFmpeg; if not, write to the Free Software
18 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
19 | */
20 |
21 | #ifndef AVUTIL_TIME_H
22 | #define AVUTIL_TIME_H
23 |
24 | #include
25 |
26 | /**
27 | * Get the current time in microseconds.
28 | */
29 | int64_t av_gettime(void);
30 |
31 | /**
32 | * Get the current time in microseconds since some unspecified starting point.
33 | * On platforms that support it, the time comes from a monotonic clock
34 | * This property makes this time source ideal for measuring relative time.
35 | * The returned values may not be monotonic on platforms where a monotonic
36 | * clock is not available.
37 | */
38 | int64_t av_gettime_relative(void);
39 |
40 | /**
41 | * Indicates with a boolean result if the av_gettime_relative() time source
42 | * is monotonic.
43 | */
44 | int av_gettime_relative_is_monotonic(void);
45 |
46 | /**
47 | * Sleep for a period of time. Although the duration is expressed in
48 | * microseconds, the actual delay may be rounded to the precision of the
49 | * system timer.
50 | *
51 | * @param usec Number of microseconds to sleep.
52 | * @return zero on success or (negative) error code.
53 | */
54 | int av_usleep(unsigned usec);
55 |
56 | #endif /* AVUTIL_TIME_H */
57 |
--------------------------------------------------------------------------------
/MILive/MILive/3rd/FFmpeg-iOS/include/libavutil/timestamp.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of FFmpeg.
3 | *
4 | * FFmpeg is free software; you can redistribute it and/or
5 | * modify it under the terms of the GNU Lesser General Public
6 | * License as published by the Free Software Foundation; either
7 | * version 2.1 of the License, or (at your option) any later version.
8 | *
9 | * FFmpeg is distributed in the hope that it will be useful,
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 | * Lesser General Public License for more details.
13 | *
14 | * You should have received a copy of the GNU Lesser General Public
15 | * License along with FFmpeg; if not, write to the Free Software
16 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
17 | */
18 |
19 | /**
20 | * @file
21 | * timestamp utils, mostly useful for debugging/logging purposes
22 | */
23 |
24 | #ifndef AVUTIL_TIMESTAMP_H
25 | #define AVUTIL_TIMESTAMP_H
26 |
27 | #include "common.h"
28 |
29 | #if defined(__cplusplus) && !defined(__STDC_FORMAT_MACROS) && !defined(PRId64)
30 | #error missing -D__STDC_FORMAT_MACROS / #define __STDC_FORMAT_MACROS
31 | #endif
32 |
33 | #define AV_TS_MAX_STRING_SIZE 32
34 |
35 | /**
36 | * Fill the provided buffer with a string containing a timestamp
37 | * representation.
38 | *
39 | * @param buf a buffer with size in bytes of at least AV_TS_MAX_STRING_SIZE
40 | * @param ts the timestamp to represent
41 | * @return the buffer in input
42 | */
43 | static inline char *av_ts_make_string(char *buf, int64_t ts)
44 | {
45 | if (ts == AV_NOPTS_VALUE) snprintf(buf, AV_TS_MAX_STRING_SIZE, "NOPTS");
46 | else snprintf(buf, AV_TS_MAX_STRING_SIZE, "%" PRId64, ts);
47 | return buf;
48 | }
49 |
50 | /**
51 | * Convenience macro, the return value should be used only directly in
52 | * function arguments but never stand-alone.
53 | */
54 | #define av_ts2str(ts) av_ts_make_string((char[AV_TS_MAX_STRING_SIZE]){0}, ts)
55 |
56 | /**
57 | * Fill the provided buffer with a string containing a timestamp time
58 | * representation.
59 | *
60 | * @param buf a buffer with size in bytes of at least AV_TS_MAX_STRING_SIZE
61 | * @param ts the timestamp to represent
62 | * @param tb the timebase of the timestamp
63 | * @return the buffer in input
64 | */
65 | static inline char *av_ts_make_time_string(char *buf, int64_t ts, AVRational *tb)
66 | {
67 | if (ts == AV_NOPTS_VALUE) snprintf(buf, AV_TS_MAX_STRING_SIZE, "NOPTS");
68 | else snprintf(buf, AV_TS_MAX_STRING_SIZE, "%.6g", av_q2d(*tb) * ts);
69 | return buf;
70 | }
71 |
72 | /**
73 | * Convenience macro, the return value should be used only directly in
74 | * function arguments but never stand-alone.
75 | */
76 | #define av_ts2timestr(ts, tb) av_ts_make_time_string((char[AV_TS_MAX_STRING_SIZE]){0}, ts, tb)
77 |
78 | #endif /* AVUTIL_TIMESTAMP_H */
79 |
--------------------------------------------------------------------------------
/MILive/MILive/3rd/FFmpeg-iOS/include/libavutil/twofish.h:
--------------------------------------------------------------------------------
1 | /*
2 | * An implementation of the TwoFish algorithm
3 | * Copyright (c) 2015 Supraja Meedinti
4 | *
5 | * This file is part of FFmpeg.
6 | *
7 | * FFmpeg is free software; you can redistribute it and/or
8 | * modify it under the terms of the GNU Lesser General Public
9 | * License as published by the Free Software Foundation; either
10 | * version 2.1 of the License, or (at your option) any later version.
11 | *
12 | * FFmpeg is distributed in the hope that it will be useful,
13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 | * Lesser General Public License for more details.
16 | *
17 | * You should have received a copy of the GNU Lesser General Public
18 | * License along with FFmpeg; if not, write to the Free Software
19 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20 | */
21 |
22 | #ifndef AVUTIL_TWOFISH_H
23 | #define AVUTIL_TWOFISH_H
24 |
25 | #include
26 |
27 |
28 | /**
29 | * @file
30 | * @brief Public header for libavutil TWOFISH algorithm
31 | * @defgroup lavu_twofish TWOFISH
32 | * @ingroup lavu_crypto
33 | * @{
34 | */
35 |
36 | extern const int av_twofish_size;
37 |
38 | struct AVTWOFISH;
39 |
40 | /**
41 | * Allocate an AVTWOFISH context
42 | * To free the struct: av_free(ptr)
43 | */
44 | struct AVTWOFISH *av_twofish_alloc(void);
45 |
46 | /**
47 | * Initialize an AVTWOFISH context.
48 | *
49 | * @param ctx an AVTWOFISH context
50 | * @param key a key of size ranging from 1 to 32 bytes used for encryption/decryption
51 | * @param key_bits number of keybits: 128, 192, 256 If less than the required, padded with zeroes to nearest valid value; return value is 0 if key_bits is 128/192/256, -1 if less than 0, 1 otherwise
52 | */
53 | int av_twofish_init(struct AVTWOFISH *ctx, const uint8_t *key, int key_bits);
54 |
55 | /**
56 | * Encrypt or decrypt a buffer using a previously initialized context
57 | *
58 | * @param ctx an AVTWOFISH context
59 | * @param dst destination array, can be equal to src
60 | * @param src source array, can be equal to dst
61 | * @param count number of 16 byte blocks
62 | * @paran iv initialization vector for CBC mode, NULL for ECB mode
63 | * @param decrypt 0 for encryption, 1 for decryption
64 | */
65 | void av_twofish_crypt(struct AVTWOFISH *ctx, uint8_t *dst, const uint8_t *src, int count, uint8_t* iv, int decrypt);
66 |
67 | /**
68 | * @}
69 | */
70 | #endif /* AVUTIL_TWOFISH_H */
71 |
--------------------------------------------------------------------------------
/MILive/MILive/3rd/FFmpeg-iOS/include/libavutil/xtea.h:
--------------------------------------------------------------------------------
1 | /*
2 | * A 32-bit implementation of the XTEA algorithm
3 | * Copyright (c) 2012 Samuel Pitoiset
4 | *
5 | * This file is part of FFmpeg.
6 | *
7 | * FFmpeg is free software; you can redistribute it and/or
8 | * modify it under the terms of the GNU Lesser General Public
9 | * License as published by the Free Software Foundation; either
10 | * version 2.1 of the License, or (at your option) any later version.
11 | *
12 | * FFmpeg is distributed in the hope that it will be useful,
13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 | * Lesser General Public License for more details.
16 | *
17 | * You should have received a copy of the GNU Lesser General Public
18 | * License along with FFmpeg; if not, write to the Free Software
19 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20 | */
21 |
22 | #ifndef AVUTIL_XTEA_H
23 | #define AVUTIL_XTEA_H
24 |
25 | #include
26 |
27 | /**
28 | * @file
29 | * @brief Public header for libavutil XTEA algorithm
30 | * @defgroup lavu_xtea XTEA
31 | * @ingroup lavu_crypto
32 | * @{
33 | */
34 |
35 | typedef struct AVXTEA {
36 | uint32_t key[16];
37 | } AVXTEA;
38 |
39 | /**
40 | * Allocate an AVXTEA context.
41 | */
42 | AVXTEA *av_xtea_alloc(void);
43 |
44 | /**
45 | * Initialize an AVXTEA context.
46 | *
47 | * @param ctx an AVXTEA context
48 | * @param key a key of 16 bytes used for encryption/decryption,
49 | * interpreted as big endian 32 bit numbers
50 | */
51 | void av_xtea_init(struct AVXTEA *ctx, const uint8_t key[16]);
52 |
53 | /**
54 | * Initialize an AVXTEA context.
55 | *
56 | * @param ctx an AVXTEA context
57 | * @param key a key of 16 bytes used for encryption/decryption,
58 | * interpreted as little endian 32 bit numbers
59 | */
60 | void av_xtea_le_init(struct AVXTEA *ctx, const uint8_t key[16]);
61 |
62 | /**
63 | * Encrypt or decrypt a buffer using a previously initialized context,
64 | * in big endian format.
65 | *
66 | * @param ctx an AVXTEA context
67 | * @param dst destination array, can be equal to src
68 | * @param src source array, can be equal to dst
69 | * @param count number of 8 byte blocks
70 | * @param iv initialization vector for CBC mode, if NULL then ECB will be used
71 | * @param decrypt 0 for encryption, 1 for decryption
72 | */
73 | void av_xtea_crypt(struct AVXTEA *ctx, uint8_t *dst, const uint8_t *src,
74 | int count, uint8_t *iv, int decrypt);
75 |
76 | /**
77 | * Encrypt or decrypt a buffer using a previously initialized context,
78 | * in little endian format.
79 | *
80 | * @param ctx an AVXTEA context
81 | * @param dst destination array, can be equal to src
82 | * @param src source array, can be equal to dst
83 | * @param count number of 8 byte blocks
84 | * @param iv initialization vector for CBC mode, if NULL then ECB will be used
85 | * @param decrypt 0 for encryption, 1 for decryption
86 | */
87 | void av_xtea_le_crypt(struct AVXTEA *ctx, uint8_t *dst, const uint8_t *src,
88 | int count, uint8_t *iv, int decrypt);
89 |
90 | /**
91 | * @}
92 | */
93 |
94 | #endif /* AVUTIL_XTEA_H */
95 |
--------------------------------------------------------------------------------
/MILive/MILive/3rd/FFmpeg-iOS/include/libswresample/version.h:
--------------------------------------------------------------------------------
1 | /*
2 | * Version macros.
3 | *
4 | * This file is part of libswresample
5 | *
6 | * libswresample is free software; you can redistribute it and/or
7 | * modify it under the terms of the GNU Lesser General Public
8 | * License as published by the Free Software Foundation; either
9 | * version 2.1 of the License, or (at your option) any later version.
10 | *
11 | * libswresample is distributed in the hope that it will be useful,
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 | * Lesser General Public License for more details.
15 | *
16 | * You should have received a copy of the GNU Lesser General Public
17 | * License along with libswresample; if not, write to the Free Software
18 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
19 | */
20 |
21 | #ifndef SWRESAMPLE_VERSION_H
22 | #define SWRESAMPLE_VERSION_H
23 |
24 | /**
25 | * @file
26 | * Libswresample version macros
27 | */
28 |
29 | #include "libavutil/avutil.h"
30 |
31 | #define LIBSWRESAMPLE_VERSION_MAJOR 2
32 | #define LIBSWRESAMPLE_VERSION_MINOR 9
33 | #define LIBSWRESAMPLE_VERSION_MICRO 100
34 |
35 | #define LIBSWRESAMPLE_VERSION_INT AV_VERSION_INT(LIBSWRESAMPLE_VERSION_MAJOR, \
36 | LIBSWRESAMPLE_VERSION_MINOR, \
37 | LIBSWRESAMPLE_VERSION_MICRO)
38 | #define LIBSWRESAMPLE_VERSION AV_VERSION(LIBSWRESAMPLE_VERSION_MAJOR, \
39 | LIBSWRESAMPLE_VERSION_MINOR, \
40 | LIBSWRESAMPLE_VERSION_MICRO)
41 | #define LIBSWRESAMPLE_BUILD LIBSWRESAMPLE_VERSION_INT
42 |
43 | #define LIBSWRESAMPLE_IDENT "SwR" AV_STRINGIFY(LIBSWRESAMPLE_VERSION)
44 |
45 | #endif /* SWRESAMPLE_VERSION_H */
46 |
--------------------------------------------------------------------------------
/MILive/MILive/3rd/FFmpeg-iOS/include/libswscale/version.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of FFmpeg.
3 | *
4 | * FFmpeg is free software; you can redistribute it and/or
5 | * modify it under the terms of the GNU Lesser General Public
6 | * License as published by the Free Software Foundation; either
7 | * version 2.1 of the License, or (at your option) any later version.
8 | *
9 | * FFmpeg is distributed in the hope that it will be useful,
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 | * Lesser General Public License for more details.
13 | *
14 | * You should have received a copy of the GNU Lesser General Public
15 | * License along with FFmpeg; if not, write to the Free Software
16 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
17 | */
18 |
19 | #ifndef SWSCALE_VERSION_H
20 | #define SWSCALE_VERSION_H
21 |
22 | /**
23 | * @file
24 | * swscale version macros
25 | */
26 |
27 | #include "libavutil/version.h"
28 |
29 | #define LIBSWSCALE_VERSION_MAJOR 4
30 | #define LIBSWSCALE_VERSION_MINOR 8
31 | #define LIBSWSCALE_VERSION_MICRO 100
32 |
33 | #define LIBSWSCALE_VERSION_INT AV_VERSION_INT(LIBSWSCALE_VERSION_MAJOR, \
34 | LIBSWSCALE_VERSION_MINOR, \
35 | LIBSWSCALE_VERSION_MICRO)
36 | #define LIBSWSCALE_VERSION AV_VERSION(LIBSWSCALE_VERSION_MAJOR, \
37 | LIBSWSCALE_VERSION_MINOR, \
38 | LIBSWSCALE_VERSION_MICRO)
39 | #define LIBSWSCALE_BUILD LIBSWSCALE_VERSION_INT
40 |
41 | #define LIBSWSCALE_IDENT "SwS" AV_STRINGIFY(LIBSWSCALE_VERSION)
42 |
43 | /**
44 | * FF_API_* defines may be placed below to indicate public API that will be
45 | * dropped at a future version bump. The defines themselves are not part of
46 | * the public API and may change, break or disappear at any time.
47 | */
48 |
49 | #ifndef FF_API_SWS_VECTOR
50 | #define FF_API_SWS_VECTOR (LIBSWSCALE_VERSION_MAJOR < 6)
51 | #endif
52 |
53 | #endif /* SWSCALE_VERSION_H */
54 |
--------------------------------------------------------------------------------
/MILive/MILive/3rd/FFmpeg-iOS/lib/libavcodec.a:
--------------------------------------------------------------------------------
1 | version https://git-lfs.github.com/spec/v1
2 | oid sha256:75c069bf60f34090fe4c6eb82a9707f8b1f9bce48174e97cca4a9439ab82b258
3 | size 114614744
4 |
--------------------------------------------------------------------------------
/MILive/MILive/3rd/FFmpeg-iOS/lib/libavdevice.a:
--------------------------------------------------------------------------------
1 | version https://git-lfs.github.com/spec/v1
2 | oid sha256:0c045479f9712e997b3cf890452110e7e7de8f61692554720cc44504cb13b272
3 | size 201520
4 |
--------------------------------------------------------------------------------
/MILive/MILive/3rd/FFmpeg-iOS/lib/libavfilter.a:
--------------------------------------------------------------------------------
1 | version https://git-lfs.github.com/spec/v1
2 | oid sha256:6e697e4b162bdb4d885fb79f386398d2c5d5cfffc90763856ccebe91966826f5
3 | size 20409088
4 |
--------------------------------------------------------------------------------
/MILive/MILive/3rd/FFmpeg-iOS/lib/libavformat.a:
--------------------------------------------------------------------------------
1 | version https://git-lfs.github.com/spec/v1
2 | oid sha256:fff4efd8fda969111404ea1c81fa4aaac388cd84854f8fe238860345735b8e9f
3 | size 28131024
4 |
--------------------------------------------------------------------------------
/MILive/MILive/3rd/FFmpeg-iOS/lib/libavutil.a:
--------------------------------------------------------------------------------
1 | version https://git-lfs.github.com/spec/v1
2 | oid sha256:1ff4384f19a2ea9f6f26d853800456107b35e22763de84a02c575dac2321de22
3 | size 3895576
4 |
--------------------------------------------------------------------------------
/MILive/MILive/3rd/FFmpeg-iOS/lib/libswresample.a:
--------------------------------------------------------------------------------
1 | version https://git-lfs.github.com/spec/v1
2 | oid sha256:366345ab084a679f168da03234b74fc68c1159c02b564240a143d65087e64a98
3 | size 984776
4 |
--------------------------------------------------------------------------------
/MILive/MILive/3rd/FFmpeg-iOS/lib/libswscale.a:
--------------------------------------------------------------------------------
1 | version https://git-lfs.github.com/spec/v1
2 | oid sha256:a234fb67469fc80f97438a9a51ba767b4b2ea57e1b4e91ca288708a55dce1030
3 | size 4861216
4 |
--------------------------------------------------------------------------------
/MILive/MILive/3rd/librtmp/include/librtmp/http.h:
--------------------------------------------------------------------------------
1 | #ifndef __RTMP_HTTP_H__
2 | #define __RTMP_HTTP_H__
3 | /*
4 | * Copyright (C) 2010 Howard Chu
5 | * Copyright (C) 2010 Antti Ajanki
6 | *
7 | * This file is part of librtmp.
8 | *
9 | * librtmp is free software; you can redistribute it and/or modify
10 | * it under the terms of the GNU Lesser General Public License as
11 | * published by the Free Software Foundation; either version 2.1,
12 | * or (at your option) any later version.
13 | *
14 | * librtmp is distributed in the hope that it will be useful,
15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 | * GNU General Public License for more details.
18 | *
19 | * You should have received a copy of the GNU Lesser General Public License
20 | * along with librtmp see the file COPYING. If not, write to
21 | * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
22 | * Boston, MA 02110-1301, USA.
23 | * http://www.gnu.org/copyleft/lgpl.html
24 | */
25 |
26 | typedef enum {
27 | HTTPRES_OK, /* result OK */
28 | HTTPRES_OK_NOT_MODIFIED, /* not modified since last request */
29 | HTTPRES_NOT_FOUND, /* not found */
30 | HTTPRES_BAD_REQUEST, /* client error */
31 | HTTPRES_SERVER_ERROR, /* server reported an error */
32 | HTTPRES_REDIRECTED, /* resource has been moved */
33 | HTTPRES_LOST_CONNECTION /* connection lost while waiting for data */
34 | } HTTPResult;
35 |
36 | struct HTTP_ctx {
37 | char *date;
38 | int size;
39 | int status;
40 | void *data;
41 | };
42 |
43 | typedef size_t (HTTP_read_callback)(void *ptr, size_t size, size_t nmemb, void *stream);
44 |
45 | HTTPResult HTTP_get(struct HTTP_ctx *http, const char *url, HTTP_read_callback *cb);
46 |
47 | #endif
48 |
--------------------------------------------------------------------------------
/MILive/MILive/3rd/librtmp/include/librtmp/log.h:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2008-2009 Andrej Stepanchuk
3 | * Copyright (C) 2009-2010 Howard Chu
4 | *
5 | * This file is part of librtmp.
6 | *
7 | * librtmp is free software; you can redistribute it and/or modify
8 | * it under the terms of the GNU Lesser General Public License as
9 | * published by the Free Software Foundation; either version 2.1,
10 | * or (at your option) any later version.
11 | *
12 | * librtmp is distributed in the hope that it will be useful,
13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 | * GNU General Public License for more details.
16 | *
17 | * You should have received a copy of the GNU Lesser General Public License
18 | * along with librtmp see the file COPYING. If not, write to
19 | * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
20 | * Boston, MA 02110-1301, USA.
21 | * http://www.gnu.org/copyleft/lgpl.html
22 | */
23 |
24 | #ifndef __RTMP_LOG_H__
25 | #define __RTMP_LOG_H__
26 |
27 | #include
28 | #include
29 | #include
30 |
31 | #ifdef __cplusplus
32 | extern "C" {
33 | #endif
34 | /* Enable this to get full debugging output */
35 | /* #define _DEBUG */
36 |
37 | #ifdef _DEBUG
38 | #undef NODEBUG
39 | #endif
40 |
41 | typedef enum
42 | { RTMP_LOGCRIT=0, RTMP_LOGERROR, RTMP_LOGWARNING, RTMP_LOGINFO,
43 | RTMP_LOGDEBUG, RTMP_LOGDEBUG2, RTMP_LOGALL
44 | } RTMP_LogLevel;
45 |
46 | extern RTMP_LogLevel RTMP_debuglevel;
47 |
48 | typedef void (RTMP_LogCallback)(int level, const char *fmt, va_list);
49 | void RTMP_LogSetCallback(RTMP_LogCallback *cb);
50 | void RTMP_LogSetOutput(FILE *file);
51 | #ifdef __GNUC__
52 | void RTMP_LogPrintf(const char *format, ...) __attribute__ ((__format__ (__printf__, 1, 2)));
53 | void RTMP_LogStatus(const char *format, ...) __attribute__ ((__format__ (__printf__, 1, 2)));
54 | void RTMP_Log(int level, const char *format, ...) __attribute__ ((__format__ (__printf__, 2, 3)));
55 | #else
56 | void RTMP_LogPrintf(const char *format, ...);
57 | void RTMP_LogStatus(const char *format, ...);
58 | void RTMP_Log(int level, const char *format, ...);
59 | #endif
60 | void RTMP_LogHex(int level, const uint8_t *data, unsigned long len);
61 | void RTMP_LogHexString(int level, const uint8_t *data, unsigned long len);
62 | void RTMP_LogSetLevel(RTMP_LogLevel lvl);
63 | RTMP_LogLevel RTMP_LogGetLevel(void);
64 |
65 | #ifdef __cplusplus
66 | }
67 | #endif
68 |
69 | #endif
70 |
--------------------------------------------------------------------------------
/MILive/MILive/3rd/librtmp/include/openssl/cmac.h:
--------------------------------------------------------------------------------
1 | /* crypto/cmac/cmac.h */
2 | /*
3 | * Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL
4 | * project.
5 | */
6 | /* ====================================================================
7 | * Copyright (c) 2010 The OpenSSL Project. All rights reserved.
8 | *
9 | * Redistribution and use in source and binary forms, with or without
10 | * modification, are permitted provided that the following conditions
11 | * are met:
12 | *
13 | * 1. Redistributions of source code must retain the above copyright
14 | * notice, this list of conditions and the following disclaimer.
15 | *
16 | * 2. Redistributions in binary form must reproduce the above copyright
17 | * notice, this list of conditions and the following disclaimer in
18 | * the documentation and/or other materials provided with the
19 | * distribution.
20 | *
21 | * 3. All advertising materials mentioning features or use of this
22 | * software must display the following acknowledgment:
23 | * "This product includes software developed by the OpenSSL Project
24 | * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)"
25 | *
26 | * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
27 | * endorse or promote products derived from this software without
28 | * prior written permission. For written permission, please contact
29 | * licensing@OpenSSL.org.
30 | *
31 | * 5. Products derived from this software may not be called "OpenSSL"
32 | * nor may "OpenSSL" appear in their names without prior written
33 | * permission of the OpenSSL Project.
34 | *
35 | * 6. Redistributions of any form whatsoever must retain the following
36 | * acknowledgment:
37 | * "This product includes software developed by the OpenSSL Project
38 | * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)"
39 | *
40 | * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
41 | * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
42 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
43 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
44 | * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
45 | * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
46 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
47 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
48 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
49 | * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
50 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
51 | * OF THE POSSIBILITY OF SUCH DAMAGE.
52 | * ====================================================================
53 | */
54 |
55 | #ifndef HEADER_CMAC_H
56 | # define HEADER_CMAC_H
57 |
58 | #ifdef __cplusplus
59 | extern "C" {
60 | #endif
61 |
62 | # include
63 |
64 | /* Opaque */
65 | typedef struct CMAC_CTX_st CMAC_CTX;
66 |
67 | CMAC_CTX *CMAC_CTX_new(void);
68 | void CMAC_CTX_cleanup(CMAC_CTX *ctx);
69 | void CMAC_CTX_free(CMAC_CTX *ctx);
70 | EVP_CIPHER_CTX *CMAC_CTX_get0_cipher_ctx(CMAC_CTX *ctx);
71 | int CMAC_CTX_copy(CMAC_CTX *out, const CMAC_CTX *in);
72 |
73 | int CMAC_Init(CMAC_CTX *ctx, const void *key, size_t keylen,
74 | const EVP_CIPHER *cipher, ENGINE *impl);
75 | int CMAC_Update(CMAC_CTX *ctx, const void *data, size_t dlen);
76 | int CMAC_Final(CMAC_CTX *ctx, unsigned char *out, size_t *poutlen);
77 | int CMAC_resume(CMAC_CTX *ctx);
78 |
79 | #ifdef __cplusplus
80 | }
81 | #endif
82 | #endif
83 |
--------------------------------------------------------------------------------
/MILive/MILive/3rd/librtmp/include/openssl/comp.h:
--------------------------------------------------------------------------------
1 |
2 | #ifndef HEADER_COMP_H
3 | # define HEADER_COMP_H
4 |
5 | # include
6 |
7 | # ifdef OPENSSL_NO_COMP
8 | # error COMP is disabled.
9 | # endif
10 |
11 | #ifdef __cplusplus
12 | extern "C" {
13 | #endif
14 |
15 | typedef struct comp_ctx_st COMP_CTX;
16 |
17 | typedef struct comp_method_st {
18 | int type; /* NID for compression library */
19 | const char *name; /* A text string to identify the library */
20 | int (*init) (COMP_CTX *ctx);
21 | void (*finish) (COMP_CTX *ctx);
22 | int (*compress) (COMP_CTX *ctx,
23 | unsigned char *out, unsigned int olen,
24 | unsigned char *in, unsigned int ilen);
25 | int (*expand) (COMP_CTX *ctx,
26 | unsigned char *out, unsigned int olen,
27 | unsigned char *in, unsigned int ilen);
28 | /*
29 | * The following two do NOTHING, but are kept for backward compatibility
30 | */
31 | long (*ctrl) (void);
32 | long (*callback_ctrl) (void);
33 | } COMP_METHOD;
34 |
35 | struct comp_ctx_st {
36 | COMP_METHOD *meth;
37 | unsigned long compress_in;
38 | unsigned long compress_out;
39 | unsigned long expand_in;
40 | unsigned long expand_out;
41 | CRYPTO_EX_DATA ex_data;
42 | };
43 |
44 | COMP_CTX *COMP_CTX_new(COMP_METHOD *meth);
45 | void COMP_CTX_free(COMP_CTX *ctx);
46 | int COMP_compress_block(COMP_CTX *ctx, unsigned char *out, int olen,
47 | unsigned char *in, int ilen);
48 | int COMP_expand_block(COMP_CTX *ctx, unsigned char *out, int olen,
49 | unsigned char *in, int ilen);
50 | COMP_METHOD *COMP_rle(void);
51 | COMP_METHOD *COMP_zlib(void);
52 | void COMP_zlib_cleanup(void);
53 |
54 | # ifdef HEADER_BIO_H
55 | # ifdef ZLIB
56 | BIO_METHOD *BIO_f_zlib(void);
57 | # endif
58 | # endif
59 |
60 | /* BEGIN ERROR CODES */
61 | /*
62 | * The following lines are auto generated by the script mkerr.pl. Any changes
63 | * made after this point may be overwritten when the script is next run.
64 | */
65 | void ERR_load_COMP_strings(void);
66 |
67 | /* Error codes for the COMP functions. */
68 |
69 | /* Function codes. */
70 | # define COMP_F_BIO_ZLIB_FLUSH 99
71 | # define COMP_F_BIO_ZLIB_NEW 100
72 | # define COMP_F_BIO_ZLIB_READ 101
73 | # define COMP_F_BIO_ZLIB_WRITE 102
74 |
75 | /* Reason codes. */
76 | # define COMP_R_ZLIB_DEFLATE_ERROR 99
77 | # define COMP_R_ZLIB_INFLATE_ERROR 100
78 | # define COMP_R_ZLIB_NOT_SUPPORTED 101
79 |
80 | #ifdef __cplusplus
81 | }
82 | #endif
83 | #endif
84 |
--------------------------------------------------------------------------------
/MILive/MILive/3rd/librtmp/include/openssl/ebcdic.h:
--------------------------------------------------------------------------------
1 | /* crypto/ebcdic.h */
2 |
3 | #ifndef HEADER_EBCDIC_H
4 | # define HEADER_EBCDIC_H
5 |
6 | # include
7 |
8 | #ifdef __cplusplus
9 | extern "C" {
10 | #endif
11 |
12 | /* Avoid name clashes with other applications */
13 | # define os_toascii _openssl_os_toascii
14 | # define os_toebcdic _openssl_os_toebcdic
15 | # define ebcdic2ascii _openssl_ebcdic2ascii
16 | # define ascii2ebcdic _openssl_ascii2ebcdic
17 |
18 | extern const unsigned char os_toascii[256];
19 | extern const unsigned char os_toebcdic[256];
20 | void *ebcdic2ascii(void *dest, const void *srce, size_t count);
21 | void *ascii2ebcdic(void *dest, const void *srce, size_t count);
22 |
23 | #ifdef __cplusplus
24 | }
25 | #endif
26 | #endif
27 |
--------------------------------------------------------------------------------
/MILive/MILive/3rd/librtmp/include/openssl/pem2.h:
--------------------------------------------------------------------------------
1 | /* ====================================================================
2 | * Copyright (c) 1999 The OpenSSL Project. All rights reserved.
3 | *
4 | * Redistribution and use in source and binary forms, with or without
5 | * modification, are permitted provided that the following conditions
6 | * are met:
7 | *
8 | * 1. Redistributions of source code must retain the above copyright
9 | * notice, this list of conditions and the following disclaimer.
10 | *
11 | * 2. Redistributions in binary form must reproduce the above copyright
12 | * notice, this list of conditions and the following disclaimer in
13 | * the documentation and/or other materials provided with the
14 | * distribution.
15 | *
16 | * 3. All advertising materials mentioning features or use of this
17 | * software must display the following acknowledgment:
18 | * "This product includes software developed by the OpenSSL Project
19 | * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)"
20 | *
21 | * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
22 | * endorse or promote products derived from this software without
23 | * prior written permission. For written permission, please contact
24 | * licensing@OpenSSL.org.
25 | *
26 | * 5. Products derived from this software may not be called "OpenSSL"
27 | * nor may "OpenSSL" appear in their names without prior written
28 | * permission of the OpenSSL Project.
29 | *
30 | * 6. Redistributions of any form whatsoever must retain the following
31 | * acknowledgment:
32 | * "This product includes software developed by the OpenSSL Project
33 | * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)"
34 | *
35 | * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
36 | * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
37 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
38 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
39 | * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
40 | * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
41 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
42 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
43 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
44 | * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
45 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
46 | * OF THE POSSIBILITY OF SUCH DAMAGE.
47 | * ====================================================================
48 | *
49 | * This product includes cryptographic software written by Eric Young
50 | * (eay@cryptsoft.com). This product includes software written by Tim
51 | * Hudson (tjh@cryptsoft.com).
52 | *
53 | */
54 |
55 | /*
56 | * This header only exists to break a circular dependency between pem and err
57 | * Ben 30 Jan 1999.
58 | */
59 |
60 | #ifdef __cplusplus
61 | extern "C" {
62 | #endif
63 |
64 | #ifndef HEADER_PEM_H
65 | void ERR_load_PEM_strings(void);
66 | #endif
67 |
68 | #ifdef __cplusplus
69 | }
70 | #endif
71 |
--------------------------------------------------------------------------------
/MILive/MILive/3rd/librtmp/include/openssl/whrlpool.h:
--------------------------------------------------------------------------------
1 | #ifndef HEADER_WHRLPOOL_H
2 | # define HEADER_WHRLPOOL_H
3 |
4 | # include
5 | # include
6 |
7 | #ifdef __cplusplus
8 | extern "C" {
9 | #endif
10 |
11 | # define WHIRLPOOL_DIGEST_LENGTH (512/8)
12 | # define WHIRLPOOL_BBLOCK 512
13 | # define WHIRLPOOL_COUNTER (256/8)
14 |
15 | typedef struct {
16 | union {
17 | unsigned char c[WHIRLPOOL_DIGEST_LENGTH];
18 | /* double q is here to ensure 64-bit alignment */
19 | double q[WHIRLPOOL_DIGEST_LENGTH / sizeof(double)];
20 | } H;
21 | unsigned char data[WHIRLPOOL_BBLOCK / 8];
22 | unsigned int bitoff;
23 | size_t bitlen[WHIRLPOOL_COUNTER / sizeof(size_t)];
24 | } WHIRLPOOL_CTX;
25 |
26 | # ifndef OPENSSL_NO_WHIRLPOOL
27 | # ifdef OPENSSL_FIPS
28 | int private_WHIRLPOOL_Init(WHIRLPOOL_CTX *c);
29 | # endif
30 | int WHIRLPOOL_Init(WHIRLPOOL_CTX *c);
31 | int WHIRLPOOL_Update(WHIRLPOOL_CTX *c, const void *inp, size_t bytes);
32 | void WHIRLPOOL_BitUpdate(WHIRLPOOL_CTX *c, const void *inp, size_t bits);
33 | int WHIRLPOOL_Final(unsigned char *md, WHIRLPOOL_CTX *c);
34 | unsigned char *WHIRLPOOL(const void *inp, size_t bytes, unsigned char *md);
35 | # endif
36 |
37 | #ifdef __cplusplus
38 | }
39 | #endif
40 |
41 | #endif
42 |
--------------------------------------------------------------------------------
/MILive/MILive/3rd/librtmp/lib/libcrypto.a:
--------------------------------------------------------------------------------
1 | version https://git-lfs.github.com/spec/v1
2 | oid sha256:9ba9d857de37517360e2dbb0c90e68b12fd06ae673a26c35dc291f622b2806d3
3 | size 10558384
4 |
--------------------------------------------------------------------------------
/MILive/MILive/3rd/librtmp/lib/librtmp.a:
--------------------------------------------------------------------------------
1 | version https://git-lfs.github.com/spec/v1
2 | oid sha256:64a0b8508592230178aecfe61ffeaaa2fa8e11ad3b98b10c8c230e252ef81067
3 | size 506248
4 |
--------------------------------------------------------------------------------
/MILive/MILive/3rd/librtmp/lib/libssl.a:
--------------------------------------------------------------------------------
1 | version https://git-lfs.github.com/spec/v1
2 | oid sha256:9e89149921d2981bfe35e776614ffbe633e667758cb31315a4f5aa50c7812d7f
3 | size 1836856
4 |
--------------------------------------------------------------------------------
/MILive/MILive/AppDelegate.h:
--------------------------------------------------------------------------------
1 | //
2 | // AppDelegate.h
3 | // MILive
4 | //
5 | // Created by ethan on 2019/6/21.
6 | // Copyright © 2019 iosmediadev@gmail.com. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface AppDelegate : UIResponder
12 |
13 | @property (strong, nonatomic) UIWindow *window;
14 |
15 |
16 | @end
17 |
18 |
--------------------------------------------------------------------------------
/MILive/MILive/AppDelegate.m:
--------------------------------------------------------------------------------
1 | //
2 | // AppDelegate.m
3 | // MILive
4 | //
5 | // Created by ethan on 2019/6/21.
6 | // Copyright © 2019 iosmediadev@gmail.com. All rights reserved.
7 | //
8 |
9 | #import "AppDelegate.h"
10 |
11 | @interface AppDelegate ()
12 |
13 | @end
14 |
15 | @implementation AppDelegate
16 |
17 |
18 | - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
19 | // Override point for customization after application launch.
20 | return YES;
21 | }
22 |
23 |
24 | - (void)applicationWillResignActive:(UIApplication *)application {
25 | // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.
26 | // Use this method to pause ongoing tasks, disable timers, and invalidate graphics rendering callbacks. Games should use this method to pause the game.
27 | }
28 |
29 |
30 | - (void)applicationDidEnterBackground:(UIApplication *)application {
31 | // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later.
32 | // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
33 | }
34 |
35 |
36 | - (void)applicationWillEnterForeground:(UIApplication *)application {
37 | // Called as part of the transition from the background to the active state; here you can undo many of the changes made on entering the background.
38 | }
39 |
40 |
41 | - (void)applicationDidBecomeActive:(UIApplication *)application {
42 | // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
43 | }
44 |
45 |
46 | - (void)applicationWillTerminate:(UIApplication *)application {
47 | // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
48 | }
49 |
50 |
51 | @end
52 |
--------------------------------------------------------------------------------
/MILive/MILive/Assets.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "iphone",
5 | "size" : "20x20",
6 | "scale" : "2x"
7 | },
8 | {
9 | "idiom" : "iphone",
10 | "size" : "20x20",
11 | "scale" : "3x"
12 | },
13 | {
14 | "idiom" : "iphone",
15 | "size" : "29x29",
16 | "scale" : "2x"
17 | },
18 | {
19 | "idiom" : "iphone",
20 | "size" : "29x29",
21 | "scale" : "3x"
22 | },
23 | {
24 | "idiom" : "iphone",
25 | "size" : "40x40",
26 | "scale" : "2x"
27 | },
28 | {
29 | "idiom" : "iphone",
30 | "size" : "40x40",
31 | "scale" : "3x"
32 | },
33 | {
34 | "idiom" : "iphone",
35 | "size" : "60x60",
36 | "scale" : "2x"
37 | },
38 | {
39 | "idiom" : "iphone",
40 | "size" : "60x60",
41 | "scale" : "3x"
42 | },
43 | {
44 | "idiom" : "ipad",
45 | "size" : "20x20",
46 | "scale" : "1x"
47 | },
48 | {
49 | "idiom" : "ipad",
50 | "size" : "20x20",
51 | "scale" : "2x"
52 | },
53 | {
54 | "idiom" : "ipad",
55 | "size" : "29x29",
56 | "scale" : "1x"
57 | },
58 | {
59 | "idiom" : "ipad",
60 | "size" : "29x29",
61 | "scale" : "2x"
62 | },
63 | {
64 | "idiom" : "ipad",
65 | "size" : "40x40",
66 | "scale" : "1x"
67 | },
68 | {
69 | "idiom" : "ipad",
70 | "size" : "40x40",
71 | "scale" : "2x"
72 | },
73 | {
74 | "idiom" : "ipad",
75 | "size" : "76x76",
76 | "scale" : "1x"
77 | },
78 | {
79 | "idiom" : "ipad",
80 | "size" : "76x76",
81 | "scale" : "2x"
82 | },
83 | {
84 | "idiom" : "ipad",
85 | "size" : "83.5x83.5",
86 | "scale" : "2x"
87 | },
88 | {
89 | "idiom" : "ios-marketing",
90 | "size" : "1024x1024",
91 | "scale" : "1x"
92 | }
93 | ],
94 | "info" : {
95 | "version" : 1,
96 | "author" : "xcode"
97 | }
98 | }
--------------------------------------------------------------------------------
/MILive/MILive/Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | }
6 | }
--------------------------------------------------------------------------------
/MILive/MILive/Base.lproj/LaunchScreen.storyboard:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/MILive/MILive/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | $(DEVELOPMENT_LANGUAGE)
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | APPL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleVersion
20 | 1
21 | LSRequiresIPhoneOS
22 |
23 | NSCameraUsageDescription
24 | need access camera
25 | NSMicrophoneUsageDescription
26 | need access your microphone
27 | NSPhotoLibraryAddUsageDescription
28 | need access your photos
29 | UILaunchStoryboardName
30 | LaunchScreen
31 | UIMainStoryboardFile
32 | Main
33 | UIRequiredDeviceCapabilities
34 |
35 | armv7
36 |
37 | UISupportedInterfaceOrientations
38 |
39 | UIInterfaceOrientationPortrait
40 |
41 | UISupportedInterfaceOrientations~ipad
42 |
43 | UIInterfaceOrientationPortrait
44 | UIInterfaceOrientationPortraitUpsideDown
45 | UIInterfaceOrientationLandscapeLeft
46 | UIInterfaceOrientationLandscapeRight
47 |
48 |
49 |
50 |
--------------------------------------------------------------------------------
/MILive/MILive/MIConst.h:
--------------------------------------------------------------------------------
1 | //
2 | // MIConst.h
3 | // MILive
4 | //
5 | // Created by mediaios on 2019/5/16.
6 | // Copyright © 2019 iosmediadev@gmail.com. All rights reserved.
7 | //
8 |
9 | #ifndef MIConst_h
10 | #define MIConst_h
11 |
12 |
13 | /*** for audio queue ***/
14 | #define kAudioSampleRate 48000
15 | #define kAudioFramesPerPacket 1
16 | #define kAudioPCMTotalPacket 512
17 | #define kAudioBytesPerPacket 2
18 | #define kQueueBuffers 3 // 输出音频队列缓冲个数
19 |
20 | /** Audio recorder **/
21 | #define kAudioQueueRecorderSampleRate 48000
22 | #define kAudioQueueRecorderPCMFramesPerPacket 1
23 | #define kAudioQueueRecorderPCMTotalPacket 512
24 | #define kAudioQueueRecorderAudioBytesPerPacket 2
25 |
26 | #define kAudioRecoderPCMMaxBuffSize 2048
27 |
28 |
29 |
30 | #define kNumberQueueBuffers 3
31 |
32 |
33 | #endif /* MIConst_h */
34 |
--------------------------------------------------------------------------------
/MILive/MILive/ViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // ViewController.h
3 | // MILive
4 | //
5 | // Created by mediaios on 2019/5/11.
6 | // Copyright © 2019 iosmediadev@gmail.com. All rights reserved.
7 | //
8 |
9 | #import
10 | #import
11 |
12 | @interface ViewController : UIViewController
13 | {
14 | @public
15 | AudioUnit miIoUnitInstance;
16 | AudioBufferList *audioBufferList;
17 | }
18 |
19 | - (void)stop;
20 | @end
21 |
22 |
23 |
--------------------------------------------------------------------------------
/MILive/MILive/audio/MIAudioCollectionVC.h:
--------------------------------------------------------------------------------
1 | //
2 | // MIAudioCollectionVC.h
3 | // MILive
4 | //
5 | // Created by mediaios on 2019/5/15.
6 | // Copyright © 2019 iosmediadev@gmail.com. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 |
13 | @interface MIAudioCollectionVC : UIViewController
14 |
15 | @end
16 |
17 | NS_ASSUME_NONNULL_END
18 |
--------------------------------------------------------------------------------
/MILive/MILive/audio/MIAudioCollectionVC.m:
--------------------------------------------------------------------------------
1 | //
2 | // MIAudioCollectionVC.m
3 | // MILive
4 | //
5 | // Created by mediaios on 2019/5/15.
6 | // Copyright © 2019 iosmediadev@gmail.com. All rights reserved.
7 | //
8 |
9 | #import "MIAudioCollectionVC.h"
10 | #import "MIAudioQueueRecord.h"
11 | #import "MIAudioUnit.h"
12 | #import "MIAudioQueuePlay.h"
13 | #import "MIAudioQueueConvert.h"
14 |
15 | @interface MIAudioCollectionVC ()
16 | @property (nonatomic,strong) MIAudioQueueRecord *miAQ;
17 | @property (nonatomic,strong) MIAudioUnit *miAUnit;
18 |
19 | @property (nonatomic,strong) MIAudioQueuePlay *aqPlay;
20 | @property (nonatomic,strong) MIAudioQueueConvert *queueConvert;
21 | @end
22 |
23 | @implementation MIAudioCollectionVC
24 |
25 | - (MIAudioQueueRecord *)miAQ
26 | {
27 | if (!_miAQ) {
28 | _miAQ = [[MIAudioQueueRecord alloc] init];
29 | }
30 | return _miAQ;
31 | }
32 |
33 | - (MIAudioUnit *)miAUnit
34 | {
35 | if (!_miAUnit) {
36 | _miAUnit = [[MIAudioUnit alloc] init];
37 | }
38 | return _miAUnit;
39 | }
40 |
41 | - (MIAudioQueuePlay *)aqPlay
42 | {
43 | if (!_aqPlay) {
44 | _aqPlay = [[MIAudioQueuePlay alloc] init];
45 | }
46 | return _aqPlay;
47 | }
48 |
49 | - (MIAudioQueueConvert *)queueConvert
50 | {
51 | if (!_queueConvert) {
52 | _queueConvert = [[MIAudioQueueConvert alloc] init];
53 | }
54 | return _queueConvert;
55 | }
56 |
57 | - (void)viewDidLoad {
58 | [super viewDidLoad];
59 | // Do any additional setup after loading the view.
60 | }
61 |
62 | #pragma mark -AudioQueue的操作
63 |
64 | - (IBAction)onPressedBtnQueueRecord:(id)sender {
65 | [self.miAQ startRecorder];
66 | }
67 |
68 | - (IBAction)onPressedBtnQueuePlay:(id)sender {
69 | [self.aqPlay startPlay];
70 | }
71 |
72 | - (IBAction)onPressedBtnQueueConvert:(id)sender {
73 | [self.queueConvert startRecorder];
74 | }
75 |
76 |
77 | #pragma mark -AudioUnit的操作
78 |
79 | - (IBAction)onPressedBtnUnitRecord:(id)sender {
80 | [self.miAUnit startAudioUnitRecorder];
81 | }
82 |
83 | - (IBAction)onPressedBtnUnitPlay:(id)sender {
84 |
85 | }
86 |
87 |
88 |
89 | - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
90 | {
91 | // [self.miAQ stopRecorder];
92 |
93 | [self.miAUnit stopAudioUnitRecorder];
94 | }
95 |
96 | - (IBAction)onPressedBtnDismiss:(id)sender {
97 | [self dismissViewControllerAnimated:YES completion:nil];
98 | }
99 |
100 |
101 | @end
102 |
--------------------------------------------------------------------------------
/MILive/MILive/audio/MIAudioQueueConvert.h:
--------------------------------------------------------------------------------
1 | //
2 | // MIAudioQueueConvert.h
3 | // MILive
4 | //
5 | // Created by mediaios on 2019/5/20.
6 | // Copyright © 2019年 iosmediadev@gmail.com. All rights reserved.
7 | //
8 |
9 | #import
10 | #import
11 | #import
12 |
13 | NS_ASSUME_NONNULL_BEGIN
14 |
15 | @interface MIAudioQueueConvert : NSObject
16 |
17 | @property (nonatomic,assign) BOOL m_isRunning;
18 | - (void)stopRecorder;
19 | - (void)startRecorder;
20 |
21 | - (void)encodePCMToAAC:(MIAudioQueueConvert *)convert;
22 | - (size_t)copyPCMSamplesIntoBuffer:(AudioBufferList*)ioData;
23 |
24 | @end
25 |
26 | NS_ASSUME_NONNULL_END
27 |
--------------------------------------------------------------------------------
/MILive/MILive/audio/MIAudioQueuePlay.h:
--------------------------------------------------------------------------------
1 | //
2 | // MIAudioQueuePlay.h
3 | // MILive
4 | //
5 | // Created by mediaios on 2019/5/17.
6 | // Copyright © 2019 iosmediadev@gmail.com. All rights reserved.
7 | //
8 |
9 | #import
10 | #import
11 |
12 | NS_ASSUME_NONNULL_BEGIN
13 |
14 | @interface MIAudioQueuePlay : NSObject
15 | - (void)startPlay;
16 | -(void)readPCMAndPlay:(AudioQueueRef)outQ buffer:(AudioQueueBufferRef)outQB;
17 | @end
18 |
19 | NS_ASSUME_NONNULL_END
20 |
--------------------------------------------------------------------------------
/MILive/MILive/audio/MIAudioQueueRecord.h:
--------------------------------------------------------------------------------
1 | //
2 | // MIAudioQueueRecord.h
3 | // MILive
4 | //
5 | // Created by mediaios on 2019/5/15.
6 | // Copyright © 2019 iosmediadev@gmail.com. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 |
13 | @interface MIAudioQueueRecord : NSObject
14 |
15 | @property (nonatomic,assign) BOOL m_isRunning;
16 | - (void)stopRecorder;
17 | - (void)startRecorder;
18 |
19 | @end
20 |
21 | NS_ASSUME_NONNULL_END
22 |
--------------------------------------------------------------------------------
/MILive/MILive/audio/MIAudioUnit.h:
--------------------------------------------------------------------------------
1 | //
2 | // MIAudioUnit.h
3 | // MILive
4 | //
5 | // Created by mediaios on 2019/5/16.
6 | // Copyright © 2019 iosmediadev@gmail.com. All rights reserved.
7 | //
8 |
9 | #import
10 | #import
11 |
12 | NS_ASSUME_NONNULL_BEGIN
13 |
14 | @interface MIAudioUnit : NSObject
15 | {
16 |
17 | AudioStreamBasicDescription dataFormat;
18 |
19 | @public
20 | AudioUnit m_audioUnit;
21 | AudioBufferList *m_audioBufferList;
22 | }
23 |
24 | @property (nonatomic,assign) BOOL m_isRunning;
25 |
26 | //+ (instancetype)shareInstance;
27 | - (void)startAudioUnitRecorder; // start recorder
28 | - (void)stopAudioUnitRecorder; // stop recorder
29 |
30 | @end
31 |
32 | NS_ASSUME_NONNULL_END
33 |
--------------------------------------------------------------------------------
/MILive/MILive/main.m:
--------------------------------------------------------------------------------
1 | //
2 | // main.m
3 | // MILive
4 | //
5 | // Created by ethan on 2019/6/21.
6 | // Copyright © 2019 ucloud. All rights reserved.
7 | //
8 |
9 | #import
10 | #import "AppDelegate.h"
11 |
12 | int main(int argc, char * argv[]) {
13 | @autoreleasepool {
14 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/MILive/MILive/push_stream/MIAudioRecord.h:
--------------------------------------------------------------------------------
1 | //
2 | // MIAudioQueueConvert.h
3 | // MILive
4 | //
5 | // Created by mediaios on 2019/5/20.
6 | // Copyright © 2019年 iosmediadev@gmail.com. All rights reserved.
7 | //
8 |
9 | #import
10 | #import
11 | #import
12 |
13 | NS_ASSUME_NONNULL_BEGIN
14 |
15 | @class MIAudioRecord;
16 |
17 | @protocol MIAudioEncoderDelegate
18 | - (void)audioEncoder:(MIAudioRecord *)encoder audioHeader:(NSData *)audioH;
19 | - (void)audioEncoder:(MIAudioRecord *)encoder audioData:(NSData *)audioData;
20 |
21 | @end
22 |
23 |
24 | @interface MIAudioRecord : NSObject
25 |
26 | @property (nonatomic,weak) id delegate;
27 | @property (nonatomic,assign) BOOL m_isRunning;
28 | - (void)stopRecorder;
29 | - (void)startRecorder;
30 |
31 | - (void)encodePCMToAAC:(MIAudioRecord *)convert;
32 | - (size_t)copyPCMSamplesIntoBuffer:(AudioBufferList*)ioData;
33 |
34 | @end
35 |
36 | NS_ASSUME_NONNULL_END
37 |
--------------------------------------------------------------------------------
/MILive/MILive/push_stream/MIPushStreamVC.h:
--------------------------------------------------------------------------------
1 | //
2 | // MIPushStreamVC.h
3 | // MILive
4 | //
5 | // Created by mediaios on 2019/6/21.
6 | // Copyright © 2019 iosmediadev@gmail.com. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 |
13 | @interface MIPushStreamVC : UIViewController
14 |
15 | @end
16 |
17 | NS_ASSUME_NONNULL_END
18 |
--------------------------------------------------------------------------------
/MILive/MILive/push_stream/MIRtpmClient.h:
--------------------------------------------------------------------------------
1 | //
2 | // MIRtpmClient.h
3 | // MILive
4 | //
5 | // Created by mediaios on 2019/6/21.
6 | // Copyright © 2019 iosmediadev@gmail.com. All rights reserved.
7 | //
8 |
9 | #import
10 | #import
11 |
12 | NS_ASSUME_NONNULL_BEGIN
13 |
14 | @interface MIRtpmClient : NSObject
15 | {
16 | RTMP* rtmp;
17 | double start_time;
18 | }
19 |
20 | - (RTMP*)getCurrentRtmp;
21 |
22 | + (instancetype)getInstance;
23 | - (BOOL)startRtmpConnect:(NSString *)urlString;
24 |
25 |
26 | /**
27 | 发送视频sps,pps
28 | */
29 | - (void)sendVideoSps:(NSData *)spsData pps:(NSData *)ppsData;
30 |
31 | /**
32 | 发送视频帧数据
33 | */
34 | - (void)sendVideoData:(NSData *)data isKeyFrame:(BOOL)isKeyFrame;
35 |
36 | /**
37 | 发送音频头信息
38 | */
39 | - (void)sendAudioHeader:(NSData *)data;
40 |
41 | /**
42 | 发送音频数据
43 | */
44 | - (void)sendAudioData:(NSData *)data;
45 |
46 | @end
47 |
48 | NS_ASSUME_NONNULL_END
49 |
--------------------------------------------------------------------------------
/MILive/MILive/push_stream/PSHWH264Encoder.h:
--------------------------------------------------------------------------------
1 | //
2 | // PSHWH264Encoder.h
3 | // MILive
4 | //
5 | // Created by mediaios on 2019/6/25.
6 | // Copyright © 2019 ucloud. All rights reserved.
7 | //
8 |
9 | #import
10 | #import
11 |
12 | NS_ASSUME_NONNULL_BEGIN
13 |
14 | @class PSHWH264Encoder;
15 | @protocol PSHWH264EncoderDelegate
16 |
17 | @optional
18 |
19 | /**
20 | 视频编码回调(当获取到sps,pps时触发)
21 | */
22 | - (void)videoEncoder:(PSHWH264Encoder *)encoder sps:(NSData *)sps pps:(NSData *)pps;
23 |
24 | /**
25 | 视频编码回调(当编码成功视频时触发)
26 | */
27 | - (void)videoEncoder:(PSHWH264Encoder *)encoder videoData:(NSData *)vData isKeyFrame:(BOOL)isKey;
28 |
29 | @end
30 |
31 |
32 | @interface PSHWH264Encoder : NSObject
33 | {
34 | NSLock *m_lock;
35 | VTCompressionSessionRef compressionSession;
36 | }
37 | @property (nonatomic,weak) id delegate;
38 | @property (assign, nonatomic) int width;
39 | @property (assign, nonatomic) int height;
40 | @property (assign, nonatomic) int fps;
41 | @property (assign, nonatomic) int bitrate;//bps
42 | @property (strong, nonatomic) NSData *sps;
43 | @property (strong, nonatomic) NSData *pps;
44 |
45 | + (instancetype)getInstance;
46 | - (void)settingEncoderParametersWithWidth:(int)width height:(int)height fps:(int)fps;
47 | - (void)encoder:(CMSampleBufferRef)sampleBuffer;
48 | @end
49 |
50 | NS_ASSUME_NONNULL_END
51 |
--------------------------------------------------------------------------------
/MILive/MILive/video_collection/MICalculator.h:
--------------------------------------------------------------------------------
1 | //
2 | // MICalculator.h
3 | // MILive
4 | //
5 | // Created by mediaios on 2019/5/12.
6 | // Copyright © 2019 iosmediadev@gmail.com. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 |
13 | @interface MICalculator : NSObject
14 |
15 |
16 | /**
17 | calculate capture video FPS
18 | */
19 | + (void)calculatorCaptureFPS;
20 |
21 | /**
22 | Get capture video FPS
23 |
24 | @return capture video FPS
25 | */
26 | + (int)getCaptureVideoFPS;
27 |
28 | @end
29 |
30 | NS_ASSUME_NONNULL_END
31 |
--------------------------------------------------------------------------------
/MILive/MILive/video_collection/MICalculator.m:
--------------------------------------------------------------------------------
1 | //
2 | // MICalculator.m
3 | // MILive
4 | //
5 | // Created by mediaios on 2019/5/12.
6 | // Copyright © 2019 iosmediadev@gmail.com. All rights reserved.
7 | //
8 |
9 | #import "MICalculator.h"
10 | #import
11 |
12 | @implementation MICalculator
13 |
14 | /**
15 | * calculate capture video FPS
16 | */
17 | static int captureVideoFPS;
18 | + (void)calculatorCaptureFPS
19 | {
20 | static int count = 0;
21 | static float lastTime = 0;
22 | CMClockRef hostClockRef = CMClockGetHostTimeClock();
23 | CMTime hostTime = CMClockGetTime(hostClockRef);
24 | float nowTime = CMTimeGetSeconds(hostTime);
25 | if(nowTime - lastTime >= 1)
26 | {
27 | captureVideoFPS = count;
28 | lastTime = nowTime;
29 | count = 0;
30 | }
31 | else
32 | {
33 | count ++;
34 | }
35 | }
36 |
37 | + (int)getCaptureVideoFPS
38 | {
39 | return captureVideoFPS;
40 | }
41 |
42 | @end
43 |
--------------------------------------------------------------------------------
/MILive/MILive/video_collection/MiVideoCollectVC.h:
--------------------------------------------------------------------------------
1 | //
2 | // MiVideoCollectVC.h
3 | // MILive
4 | //
5 | // Created by mediaios on 2019/5/12.
6 | // Copyright © 2019 iosmediadev@gmail.com. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 |
13 | @interface MiVideoCollectVC : UIViewController
14 |
15 | @end
16 |
17 | NS_ASSUME_NONNULL_END
18 |
--------------------------------------------------------------------------------
/MILive/MILive/video_encoder/MIHWH264Encoder.h:
--------------------------------------------------------------------------------
1 | //
2 | // MIHWH264Encoder.h
3 | // MILive
4 | //
5 | // Created by mediaios on 2019/5/30.
6 | // Copyright © 2019 iosmediadev@gmail.com. All rights reserved.
7 | //
8 |
9 | #import
10 | #import
11 |
12 | typedef enum{
13 | H264Data_NALU_TYPE_IDR = 0,
14 | H264Data_NALU_TYPE_NOIDR
15 | }H264Data_NALU_TYPE;
16 |
17 | @protocol MIHWH264EncoderDelegate
18 | - (void)acceptEncoderData:(uint8_t *)data length:(int)len naluType:(H264Data_NALU_TYPE)naluType;
19 | @end
20 |
21 |
22 | NS_ASSUME_NONNULL_BEGIN
23 |
24 | @interface MIHWH264Encoder : NSObject
25 | {
26 | NSLock *m_lock;
27 | VTCompressionSessionRef compressionSession;
28 | }
29 | @property (nonatomic,weak) id delegate;
30 | @property (assign, nonatomic) int width;
31 | @property (assign, nonatomic) int height;
32 | @property (assign, nonatomic) int fps;
33 | @property (assign, nonatomic) int bitrate;//bps
34 |
35 | + (instancetype)getInstance;
36 | - (void)settingEncoderParametersWithWidth:(int)width height:(int)height fps:(int)fps;
37 | - (void)encoder:(CMSampleBufferRef)sampleBuffer;
38 |
39 |
40 | @end
41 |
42 | NS_ASSUME_NONNULL_END
43 |
--------------------------------------------------------------------------------
/MILive/MILive/video_encoder/MILiveVC.h:
--------------------------------------------------------------------------------
1 | //
2 | // MILiveVC.h
3 | // MILive
4 | //
5 | // Created by mediaios on 2019/5/30.
6 | // Copyright © 2019 iosmediadev@gmail.com. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 |
13 | @interface MILiveVC : UIViewController
14 |
15 | @end
16 |
17 | NS_ASSUME_NONNULL_END
18 |
--------------------------------------------------------------------------------
/MILive/MILive/video_encoder/MISoftH264Encoder.h:
--------------------------------------------------------------------------------
1 | //
2 | // MISoftH264Encoder.h
3 | // MILive
4 | //
5 | // Created by mediaios on 2019/5/30.
6 | // Copyright © 2019 iosmediadev@gmail.com. All rights reserved.
7 | //
8 |
9 | #import
10 | #import
11 |
12 |
13 | #ifdef __cplusplus
14 | extern "C"
15 | {
16 | #endif
17 |
18 | #include "libavcodec/avcodec.h"
19 | #include "libavformat/avformat.h"
20 | #include "libavutil/avstring.h"
21 | #include "libavutil/imgutils.h"
22 | #include "libavutil/error.h"
23 | #include "libswscale/swscale.h"
24 | #include
25 | #include
26 | #include
27 | #ifdef __cplusplus
28 | }
29 | #endif
30 |
31 | NS_ASSUME_NONNULL_BEGIN
32 |
33 | @interface MISoftH264Encoder : NSObject
34 |
35 | + (instancetype)getInstance;
36 | - (void)setFileSavedPath:(NSString *)path;
37 | - (int)setEncoderVideoWidth:(int)width height:(int)height bitrate:(int)bitrate;
38 | - (void)encoderToH264:(CMSampleBufferRef)sampleBuffer;
39 | - (void)freeH264Resource;
40 |
41 | @end
42 |
43 | NS_ASSUME_NONNULL_END
44 |
--------------------------------------------------------------------------------
/MILive/MILiveTests/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | $(DEVELOPMENT_LANGUAGE)
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | BNDL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleVersion
20 | 1
21 |
22 |
23 |
--------------------------------------------------------------------------------
/MILive/MILiveTests/MILiveTests.m:
--------------------------------------------------------------------------------
1 | //
2 | // MILiveTests.m
3 | // MILiveTests
4 | //
5 | // Created by ethan on 2019/6/21.
6 | // Copyright © 2019 ucloud. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface MILiveTests : XCTestCase
12 |
13 | @end
14 |
15 | @implementation MILiveTests
16 |
17 | - (void)setUp {
18 | // Put setup code here. This method is called before the invocation of each test method in the class.
19 | }
20 |
21 | - (void)tearDown {
22 | // Put teardown code here. This method is called after the invocation of each test method in the class.
23 | }
24 |
25 | - (void)testExample {
26 | // This is an example of a functional test case.
27 | // Use XCTAssert and related functions to verify your tests produce the correct results.
28 | }
29 |
30 | - (void)testPerformanceExample {
31 | // This is an example of a performance test case.
32 | [self measureBlock:^{
33 | // Put the code you want to measure the time of here.
34 | }];
35 | }
36 |
37 | @end
38 |
--------------------------------------------------------------------------------
/MILive/MILiveUITests/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | $(DEVELOPMENT_LANGUAGE)
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | BNDL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleVersion
20 | 1
21 |
22 |
23 |
--------------------------------------------------------------------------------
/MILive/MILiveUITests/MILiveUITests.m:
--------------------------------------------------------------------------------
1 | //
2 | // MILiveUITests.m
3 | // MILiveUITests
4 | //
5 | // Created by ethan on 2019/6/21.
6 | // Copyright © 2019 ucloud. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface MILiveUITests : XCTestCase
12 |
13 | @end
14 |
15 | @implementation MILiveUITests
16 |
17 | - (void)setUp {
18 | // Put setup code here. This method is called before the invocation of each test method in the class.
19 |
20 | // In UI tests it is usually best to stop immediately when a failure occurs.
21 | self.continueAfterFailure = NO;
22 |
23 | // UI tests must launch the application that they test. Doing this in setup will make sure it happens for each test method.
24 | [[[XCUIApplication alloc] init] launch];
25 |
26 | // In UI tests it’s important to set the initial state - such as interface orientation - required for your tests before they run. The setUp method is a good place to do this.
27 | }
28 |
29 | - (void)tearDown {
30 | // Put teardown code here. This method is called after the invocation of each test method in the class.
31 | }
32 |
33 | - (void)testExample {
34 | // Use recording to get started writing UI tests.
35 | // Use XCTAssert and related functions to verify your tests produce the correct results.
36 | }
37 |
38 | @end
39 |
--------------------------------------------------------------------------------
/MIPlay/AVPlayerDemo_01/AVPlayerDemo_01.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/MIPlay/AVPlayerDemo_01/AVPlayerDemo_01.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/MIPlay/AVPlayerDemo_01/AVPlayerDemo_01/AppDelegate.h:
--------------------------------------------------------------------------------
1 | //
2 | // AppDelegate.h
3 | // AVPlayerDemo_01
4 | //
5 | // Created by mediaios on 2019/8/14.
6 | // Copyright © 2019 mediaios. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface AppDelegate : UIResponder
12 |
13 | @property (strong, nonatomic) UIWindow *window;
14 |
15 |
16 | @end
17 |
18 |
--------------------------------------------------------------------------------
/MIPlay/AVPlayerDemo_01/AVPlayerDemo_01/AppDelegate.m:
--------------------------------------------------------------------------------
1 | //
2 | // AppDelegate.m
3 | // AVPlayerDemo_01
4 | //
5 | // Created by mediaios on 2019/8/14.
6 | // Copyright © 2019 mediaios. All rights reserved.
7 | //
8 |
9 | #import "AppDelegate.h"
10 |
11 | @interface AppDelegate ()
12 |
13 | @end
14 |
15 | @implementation AppDelegate
16 |
17 |
18 | - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
19 | // Override point for customization after application launch.
20 | return YES;
21 | }
22 |
23 |
24 | - (void)applicationWillResignActive:(UIApplication *)application {
25 | // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.
26 | // Use this method to pause ongoing tasks, disable timers, and invalidate graphics rendering callbacks. Games should use this method to pause the game.
27 | }
28 |
29 |
30 | - (void)applicationDidEnterBackground:(UIApplication *)application {
31 | // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later.
32 | // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
33 | }
34 |
35 |
36 | - (void)applicationWillEnterForeground:(UIApplication *)application {
37 | // Called as part of the transition from the background to the active state; here you can undo many of the changes made on entering the background.
38 | }
39 |
40 |
41 | - (void)applicationDidBecomeActive:(UIApplication *)application {
42 | // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
43 | }
44 |
45 |
46 | - (void)applicationWillTerminate:(UIApplication *)application {
47 | // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
48 | }
49 |
50 |
51 | @end
52 |
--------------------------------------------------------------------------------
/MIPlay/AVPlayerDemo_01/AVPlayerDemo_01/Assets.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "iphone",
5 | "size" : "20x20",
6 | "scale" : "2x"
7 | },
8 | {
9 | "idiom" : "iphone",
10 | "size" : "20x20",
11 | "scale" : "3x"
12 | },
13 | {
14 | "idiom" : "iphone",
15 | "size" : "29x29",
16 | "scale" : "2x"
17 | },
18 | {
19 | "idiom" : "iphone",
20 | "size" : "29x29",
21 | "scale" : "3x"
22 | },
23 | {
24 | "idiom" : "iphone",
25 | "size" : "40x40",
26 | "scale" : "2x"
27 | },
28 | {
29 | "idiom" : "iphone",
30 | "size" : "40x40",
31 | "scale" : "3x"
32 | },
33 | {
34 | "idiom" : "iphone",
35 | "size" : "60x60",
36 | "scale" : "2x"
37 | },
38 | {
39 | "idiom" : "iphone",
40 | "size" : "60x60",
41 | "scale" : "3x"
42 | },
43 | {
44 | "idiom" : "ipad",
45 | "size" : "20x20",
46 | "scale" : "1x"
47 | },
48 | {
49 | "idiom" : "ipad",
50 | "size" : "20x20",
51 | "scale" : "2x"
52 | },
53 | {
54 | "idiom" : "ipad",
55 | "size" : "29x29",
56 | "scale" : "1x"
57 | },
58 | {
59 | "idiom" : "ipad",
60 | "size" : "29x29",
61 | "scale" : "2x"
62 | },
63 | {
64 | "idiom" : "ipad",
65 | "size" : "40x40",
66 | "scale" : "1x"
67 | },
68 | {
69 | "idiom" : "ipad",
70 | "size" : "40x40",
71 | "scale" : "2x"
72 | },
73 | {
74 | "idiom" : "ipad",
75 | "size" : "76x76",
76 | "scale" : "1x"
77 | },
78 | {
79 | "idiom" : "ipad",
80 | "size" : "76x76",
81 | "scale" : "2x"
82 | },
83 | {
84 | "idiom" : "ipad",
85 | "size" : "83.5x83.5",
86 | "scale" : "2x"
87 | },
88 | {
89 | "idiom" : "ios-marketing",
90 | "size" : "1024x1024",
91 | "scale" : "1x"
92 | }
93 | ],
94 | "info" : {
95 | "version" : 1,
96 | "author" : "xcode"
97 | }
98 | }
--------------------------------------------------------------------------------
/MIPlay/AVPlayerDemo_01/AVPlayerDemo_01/Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | }
6 | }
--------------------------------------------------------------------------------
/MIPlay/AVPlayerDemo_01/AVPlayerDemo_01/Assets.xcassets/sliderIcon.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "sliderIcon.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "version" : 1,
19 | "author" : "xcode"
20 | }
21 | }
--------------------------------------------------------------------------------
/MIPlay/AVPlayerDemo_01/AVPlayerDemo_01/Assets.xcassets/sliderIcon.imageset/sliderIcon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mediaios/AVLive_Research/c41382a2e4dccbe4066423b5002280c0808b5031/MIPlay/AVPlayerDemo_01/AVPlayerDemo_01/Assets.xcassets/sliderIcon.imageset/sliderIcon.png
--------------------------------------------------------------------------------
/MIPlay/AVPlayerDemo_01/AVPlayerDemo_01/Base.lproj/LaunchScreen.storyboard:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/MIPlay/AVPlayerDemo_01/AVPlayerDemo_01/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | NSAppTransportSecurity
6 |
7 | NSAllowsArbitraryLoads
8 |
9 |
10 | CFBundleDevelopmentRegion
11 | $(DEVELOPMENT_LANGUAGE)
12 | CFBundleExecutable
13 | $(EXECUTABLE_NAME)
14 | CFBundleIdentifier
15 | $(PRODUCT_BUNDLE_IDENTIFIER)
16 | CFBundleInfoDictionaryVersion
17 | 6.0
18 | CFBundleName
19 | $(PRODUCT_NAME)
20 | CFBundlePackageType
21 | APPL
22 | CFBundleShortVersionString
23 | 1.0
24 | CFBundleVersion
25 | 1
26 | LSRequiresIPhoneOS
27 |
28 | UILaunchStoryboardName
29 | LaunchScreen
30 | UIMainStoryboardFile
31 | Main
32 | UIRequiredDeviceCapabilities
33 |
34 | armv7
35 |
36 | UISupportedInterfaceOrientations
37 |
38 | UIInterfaceOrientationPortrait
39 | UIInterfaceOrientationLandscapeLeft
40 | UIInterfaceOrientationLandscapeRight
41 |
42 | UISupportedInterfaceOrientations~ipad
43 |
44 | UIInterfaceOrientationPortrait
45 | UIInterfaceOrientationPortraitUpsideDown
46 | UIInterfaceOrientationLandscapeLeft
47 | UIInterfaceOrientationLandscapeRight
48 |
49 |
50 |
51 |
--------------------------------------------------------------------------------
/MIPlay/AVPlayerDemo_01/AVPlayerDemo_01/LYVideoPlayer/resource/full_screen@2x1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mediaios/AVLive_Research/c41382a2e4dccbe4066423b5002280c0808b5031/MIPlay/AVPlayerDemo_01/AVPlayerDemo_01/LYVideoPlayer/resource/full_screen@2x1.png
--------------------------------------------------------------------------------
/MIPlay/AVPlayerDemo_01/AVPlayerDemo_01/LYVideoPlayer/resource/normal_screen@2x1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mediaios/AVLive_Research/c41382a2e4dccbe4066423b5002280c0808b5031/MIPlay/AVPlayerDemo_01/AVPlayerDemo_01/LYVideoPlayer/resource/normal_screen@2x1.png
--------------------------------------------------------------------------------
/MIPlay/AVPlayerDemo_01/AVPlayerDemo_01/MIVideoPlayer/MISlider.h:
--------------------------------------------------------------------------------
1 | //
2 | // MISlider.h
3 | // AVPlayerDemo_01
4 | //
5 | // Created by mediaios on 2019/8/22.
6 | // Copyright © 2019 mediaios. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 |
13 | @interface MISlider : UIControl
14 |
15 |
16 | #pragma mark- public propertys
17 | /**
18 | @brief 播放进度
19 | */
20 | @property (nonatomic, assign) CGFloat playProgress;
21 |
22 | /**
23 | @brief 缓冲进度
24 | */
25 | @property (nonatomic, assign) CGFloat bufferProgress;
26 |
27 |
28 | #pragma mark- public methods
29 |
30 | - (void)setupColorWithTrackColor:(UIColor *)trackColor
31 | bufferedCollor:(UIColor *)bufferedCollor
32 | playedColor:(UIColor *)playedColor;
33 |
34 | /** 可为滑块设置图片 */
35 | - (void)setDotImage:(UIImage *)dotImage forState:(UIControlState)state;
36 |
37 | //横竖屏转换
38 | - (void)beginFullScreen:(BOOL)isFullScreen;
39 | @end
40 |
41 | NS_ASSUME_NONNULL_END
42 |
--------------------------------------------------------------------------------
/MIPlay/AVPlayerDemo_01/AVPlayerDemo_01/MIVideoPlayer/MIVideoPlayer.h:
--------------------------------------------------------------------------------
1 | //
2 | // MIVideoPlayer.h
3 | // AVPlayerDemo_01
4 | //
5 | // Created by mediaios on 2019/8/15.
6 | // Copyright © 2019 mediaios. All rights reserved.
7 | //
8 |
9 | #import
10 | #import
11 | #import "MIVideoPlayerDef.h"
12 |
13 | NS_ASSUME_NONNULL_BEGIN
14 |
15 | @class MIVideoPlayer;
16 | @protocol MIVideoPlayerDelegate
17 |
18 | - (void)videoPlayer:(MIVideoPlayer *)videoPlayer
19 | videoPlayerState:(MIVideoPlayerState)state;
20 |
21 | - (void)videoPlayer:(MIVideoPlayer *)videoPlayer
22 | totalTime:(NSUInteger)totalTime
23 | currentTime:(NSUInteger)currentTime;
24 |
25 | - (void)videoPlayer:(MIVideoPlayer *)videoPlayer
26 | bufferProgress:(CGFloat)buffProgress;
27 | @end
28 |
29 |
30 |
31 | @interface MIVideoPlayer : NSObject
32 |
33 | @property (nonatomic,weak) id delegate;
34 | @property (nonatomic, assign) CGSize videoSize;
35 |
36 | /**
37 | @brief 在视频播放完成时是否需要重播,默认是NO
38 | */
39 | @property (nonatomic,assign) BOOL enableReplay;
40 |
41 | /**
42 | @brief 开始播放视频
43 | */
44 | - (void)play;
45 |
46 | /**
47 | @brief 暂停播放
48 | */
49 | - (void)pause;
50 |
51 | /**
52 | @brief 停止并销毁播放器
53 | */
54 | - (void)destoryPlayer;
55 |
56 | /**
57 | @brief 从指定时间点开始播放
58 |
59 | @param fromTime 指定的时间点
60 | */
61 | - (void)seekPlayFromTime:(float)fromTime;
62 |
63 | /**
64 | @brief 播放视频
65 |
66 | @param url 视频url
67 | @param videoView 视频显示视图
68 | */
69 | - (void)playUrl:(NSString *)url onView:(UIView *)videoView;
70 |
71 |
72 | /**
73 | @brief 播放本地文件
74 |
75 | @param path 本地文件路径
76 | @param videoView 视频显示视图
77 | */
78 | - (void)playLocalFile:(NSString *)path onView:(UIView *)videoView;
79 |
80 | /**
81 | @brief 设置显示层位置尺寸
82 |
83 | @param frame 显示层的frame
84 | */
85 | - (void)settingFrame:(CGRect)frame;
86 |
87 | @end
88 |
89 | NS_ASSUME_NONNULL_END
90 |
--------------------------------------------------------------------------------
/MIPlay/AVPlayerDemo_01/AVPlayerDemo_01/MIVideoPlayer/MIVideoPlayerController.h:
--------------------------------------------------------------------------------
1 | //
2 | // MIVideoPlayerController.h
3 | // AVPlayerDemo_01
4 | //
5 | // Created by mediaios on 2019/8/15.
6 | // Copyright © 2019 mediaios. All rights reserved.
7 | //
8 |
9 | #import
10 | #import
11 |
12 | NS_ASSUME_NONNULL_BEGIN
13 |
14 | @interface MIVideoPlayerController : NSObject
15 |
16 |
17 | /**
18 | @brief 播放网络视频文件
19 |
20 | @param url 网络视频文件地址
21 | @param view 视频要被显示在哪个view上面
22 | */
23 | - (void)playUrl:(NSString *)url onView:(UIView *)view;
24 |
25 |
26 | /**
27 | @brief 播放本地视频文件
28 |
29 | @param path 视频文件地址
30 | @param view 视频要被显示在哪个view上面
31 | */
32 | - (void)playLocalPath:(NSString *)path onView:(UIView *)view;
33 |
34 | @end
35 |
36 | NS_ASSUME_NONNULL_END
37 |
--------------------------------------------------------------------------------
/MIPlay/AVPlayerDemo_01/AVPlayerDemo_01/MIVideoPlayer/MIVideoPlayerDef.h:
--------------------------------------------------------------------------------
1 | //
2 | // MIVideoPlayerDef.h
3 | // AVPlayerDemo_01
4 | //
5 | // Created by mediaios on 2019/8/15.
6 | // Copyright © 2019 mediaios. All rights reserved.
7 | //
8 |
9 | #ifndef MIVideoPlayerDef_h
10 | #define MIVideoPlayerDef_h
11 |
12 |
13 | typedef NS_ENUM(NSUInteger, MIVideoPlayerState)
14 | {
15 | MIVideoPlayerState_StartBuffer,
16 | MIVideoPlayerState_EndBuffer,
17 | MIVideoPlayerState_DidPlay,
18 | MIVideoPlayerState_DidPause,
19 | MIVideoPlayerState_EndPlay
20 | };
21 |
22 |
23 | typedef NS_ENUM(NSUInteger, MIVideoPlayerPaneEvent)
24 | {
25 | MIVideoPlayerPaneEvent_Back,
26 | MIVideoPlayerPaneEvent_FullScreen,
27 | MIVideoPlayerPaneEvent_Play,
28 | MIVideoPlayerPaneEvent_Pause
29 | };
30 |
31 |
32 | #endif /* MIVideoPlayerDef_h */
33 |
--------------------------------------------------------------------------------
/MIPlay/AVPlayerDemo_01/AVPlayerDemo_01/MIVideoPlayer/MIVideoPlayerHelper.h:
--------------------------------------------------------------------------------
1 | //
2 | // MIVideoPlayerHelper.h
3 | // AVPlayerDemo_01
4 | //
5 | // Created by mediaios on 2019/8/22.
6 | // Copyright © 2019 mediaios. All rights reserved.
7 | //
8 |
9 | #import
10 | #import
11 |
12 | NS_ASSUME_NONNULL_BEGIN
13 |
14 | @interface MIVideoPlayerHelper : NSObject
15 |
16 | /** 根据颜色和圆的半径来创建一个 Image */
17 |
18 | /**
19 | @brief 创建一个圆形image
20 |
21 | @param color image的颜色
22 | @param radius 圆形image的半径
23 | @return 返回一个圆形image
24 | */
25 | + (UIImage *)generateImageWithColor:(UIColor *)color radius:(CGFloat)radius;
26 |
27 | /**
28 | @brief 转换一个UIView成UIImage
29 |
30 | @param view 要被转化为UIImage的UIView
31 | @return 返回转换好的UIImage
32 | */
33 | + (UIImage*)generateImageWithView:(UIView *)view;
34 |
35 | @end
36 |
37 | NS_ASSUME_NONNULL_END
38 |
--------------------------------------------------------------------------------
/MIPlay/AVPlayerDemo_01/AVPlayerDemo_01/MIVideoPlayer/MIVideoPlayerHelper.m:
--------------------------------------------------------------------------------
1 | //
2 | // MIVideoPlayerHelper.m
3 | // AVPlayerDemo_01
4 | //
5 | // Created by mediaios on 2019/8/22.
6 | // Copyright © 2019 mediaios. All rights reserved.
7 | //
8 |
9 | #import "MIVideoPlayerHelper.h"
10 |
11 | const CGFloat PI = 3.1415926;
12 |
13 | @implementation MIVideoPlayerHelper
14 |
15 | + (UIImage *)generateImageWithColor:(UIColor *)color radius:(CGFloat)radius
16 | {
17 | CGRect rect = CGRectMake(0.0f, 0.0f,radius * 2 + 4, radius * 2 + 4);
18 |
19 | UIGraphicsBeginImageContextWithOptions(rect.size, NO, 0.0);
20 | CGContextRef context =UIGraphicsGetCurrentContext();
21 | CGContextSetRGBStrokeColor(context,1,1,1,1.0);
22 | CGContextSetFillColorWithColor(context, color.CGColor);
23 | CGContextSetLineWidth(context, 4.0);
24 | CGContextAddArc(context, radius + 2,radius + 2, radius, 0, 2*PI, 0);
25 | CGContextDrawPath(context, kCGPathFillStroke);
26 | UIImage *myImage =UIGraphicsGetImageFromCurrentImageContext();
27 | UIGraphicsEndImageContext();
28 | return myImage;
29 | }
30 |
31 | + (UIImage*)generateImageWithView:(UIView *)view
32 | {
33 | CGRect rect = view.frame;
34 | UIGraphicsBeginImageContextWithOptions(rect.size, NO, 0.0);
35 | CGContextRef context = UIGraphicsGetCurrentContext();
36 | [view.layer renderInContext:context];
37 | UIImage *img = UIGraphicsGetImageFromCurrentImageContext();
38 | UIGraphicsEndImageContext();
39 | return img;
40 | }
41 |
42 | @end
43 |
--------------------------------------------------------------------------------
/MIPlay/AVPlayerDemo_01/AVPlayerDemo_01/MIVideoPlayer/MIVideoPlayerPane.h:
--------------------------------------------------------------------------------
1 | //
2 | // MIVideoPlayerPane.h
3 | // AVPlayerDemo_01
4 | //
5 | // Created by mediaios on 2019/8/15.
6 | // Copyright © 2019 mediaios. All rights reserved.
7 | //
8 |
9 | #import
10 | #import "MIVideoPlayerDef.h"
11 |
12 | NS_ASSUME_NONNULL_BEGIN
13 |
14 | @class MIVideoPlayerPane;
15 | @protocol MIVideoPlayerPaneDelegate
16 |
17 | - (void)videoPlayerPane:(MIVideoPlayerPane *)videoPlayerPane
18 | videoPlayerPaneEvent:(MIVideoPlayerPaneEvent)paneEvent;
19 |
20 |
21 | - (void)videoPlayerPane:(MIVideoPlayerPane*)videoPlayerPane
22 | didPlayToTime:(CGFloat)time;
23 | @end
24 |
25 | @interface MIVideoPlayerPane : UIView
26 | @property (nonatomic,weak) id delegate;
27 |
28 | @property (nonatomic,assign) NSUInteger currentTime;
29 | @property (nonatomic,assign) NSUInteger totalTime;
30 | @property (nonatomic, assign) CGFloat playValue; //播放进度
31 | @property (nonatomic, assign) CGFloat progress; //缓冲进度
32 |
33 | //@property (nonatomic,assign) MIPaneLayoutType paneLayoutType;
34 |
35 | //播放器调用方法
36 | - (void)videoPlayerDidLoading;
37 |
38 | - (void)videoPlayerDidBeginPlay;
39 |
40 | - (void)videoPlayerDidEndPlay;
41 |
42 | - (void)videoPlayerDidFailedPlay;
43 |
44 | - (void)playerPanePlay;
45 | - (void)playerPanePause;
46 |
47 | - (void)fullScreenChanged:(BOOL)isFullScreen frame:(CGRect)frame;
48 |
49 | @end
50 |
51 | NS_ASSUME_NONNULL_END
52 |
--------------------------------------------------------------------------------
/MIPlay/AVPlayerDemo_01/AVPlayerDemo_01/MIVideoPlayer/resource/back@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mediaios/AVLive_Research/c41382a2e4dccbe4066423b5002280c0808b5031/MIPlay/AVPlayerDemo_01/AVPlayerDemo_01/MIVideoPlayer/resource/back@2x.png
--------------------------------------------------------------------------------
/MIPlay/AVPlayerDemo_01/AVPlayerDemo_01/MIVideoPlayer/resource/fast_forward@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mediaios/AVLive_Research/c41382a2e4dccbe4066423b5002280c0808b5031/MIPlay/AVPlayerDemo_01/AVPlayerDemo_01/MIVideoPlayer/resource/fast_forward@2x.png
--------------------------------------------------------------------------------
/MIPlay/AVPlayerDemo_01/AVPlayerDemo_01/MIVideoPlayer/resource/full_screen@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mediaios/AVLive_Research/c41382a2e4dccbe4066423b5002280c0808b5031/MIPlay/AVPlayerDemo_01/AVPlayerDemo_01/MIVideoPlayer/resource/full_screen@2x.png
--------------------------------------------------------------------------------
/MIPlay/AVPlayerDemo_01/AVPlayerDemo_01/MIVideoPlayer/resource/normal_screen@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mediaios/AVLive_Research/c41382a2e4dccbe4066423b5002280c0808b5031/MIPlay/AVPlayerDemo_01/AVPlayerDemo_01/MIVideoPlayer/resource/normal_screen@2x.png
--------------------------------------------------------------------------------
/MIPlay/AVPlayerDemo_01/AVPlayerDemo_01/MIVideoPlayer/resource/pause@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mediaios/AVLive_Research/c41382a2e4dccbe4066423b5002280c0808b5031/MIPlay/AVPlayerDemo_01/AVPlayerDemo_01/MIVideoPlayer/resource/pause@2x.png
--------------------------------------------------------------------------------
/MIPlay/AVPlayerDemo_01/AVPlayerDemo_01/MIVideoPlayer/resource/play@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mediaios/AVLive_Research/c41382a2e4dccbe4066423b5002280c0808b5031/MIPlay/AVPlayerDemo_01/AVPlayerDemo_01/MIVideoPlayer/resource/play@2x.png
--------------------------------------------------------------------------------
/MIPlay/AVPlayerDemo_01/AVPlayerDemo_01/MIVideoPlayer/resource/rewind@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mediaios/AVLive_Research/c41382a2e4dccbe4066423b5002280c0808b5031/MIPlay/AVPlayerDemo_01/AVPlayerDemo_01/MIVideoPlayer/resource/rewind@2x.png
--------------------------------------------------------------------------------
/MIPlay/AVPlayerDemo_01/AVPlayerDemo_01/MIVideoPlayer/resource/xxsj.mp4:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mediaios/AVLive_Research/c41382a2e4dccbe4066423b5002280c0808b5031/MIPlay/AVPlayerDemo_01/AVPlayerDemo_01/MIVideoPlayer/resource/xxsj.mp4
--------------------------------------------------------------------------------
/MIPlay/AVPlayerDemo_01/AVPlayerDemo_01/PrefixHeader.pch:
--------------------------------------------------------------------------------
1 | //
2 | // PrefixHeader.pch
3 | // AVPlayerDemo_01
4 | //
5 | // Created by mediaios on 2019/8/15.
6 | // Copyright © 2019 mediaios. All rights reserved.
7 | //
8 |
9 | #ifndef PrefixHeader_pch
10 | #define PrefixHeader_pch
11 |
12 | #import "LYPlayerHeader.h"
13 | // Include any system framework and library headers here that should be included in all compilation units.
14 | // You will also need to set the Prefix Header build setting of one or more of your targets to reference this file.
15 |
16 | #endif /* PrefixHeader_pch */
17 |
--------------------------------------------------------------------------------
/MIPlay/AVPlayerDemo_01/AVPlayerDemo_01/ViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // ViewController.h
3 | // AVPlayerDemo_01
4 | //
5 | // Created by mediaios on 2019/8/14.
6 | // Copyright © 2019 mediaios. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface ViewController : UIViewController
12 |
13 |
14 | @end
15 |
16 |
--------------------------------------------------------------------------------
/MIPlay/AVPlayerDemo_01/AVPlayerDemo_01/ViewController.m:
--------------------------------------------------------------------------------
1 | //
2 | // ViewController.m
3 | // AVPlayerDemo_01
4 | //
5 | // Created by mediaios on 2019/8/14.
6 | // Copyright © 2019 mediaios. All rights reserved.
7 | //
8 |
9 | #import "ViewController.h"
10 | #import "MIVideoPlayer.h"
11 | #import "MIVideoPlayerController.h"
12 |
13 | @interface ViewController()
14 | @property (nonatomic ,strong) UIView *videoPlayBGView;
15 | @property (nonatomic,strong) MIVideoPlayer *vPlayer;
16 | @property (nonatomic,strong) MIVideoPlayerController *vPlaying;
17 | @end
18 |
19 |
20 | @implementation ViewController
21 |
22 |
23 | -(MIVideoPlayerController *)vPlaying
24 | {
25 | if (!_vPlaying) {
26 | _vPlaying = [[MIVideoPlayerController alloc] init];
27 | }
28 | return _vPlaying;
29 | }
30 |
31 | - (void)viewDidLoad {
32 | [super viewDidLoad];
33 | // Do any additional setup after loading the view.
34 |
35 | self.videoPlayBGView = [[UIView alloc] initWithFrame:CGRectMake(0, 44, self.view.frame.size.width, self.view.frame.size.width * 0.6)];
36 | self.videoPlayBGView.backgroundColor = [UIColor blackColor];
37 | [self.view addSubview:self.videoPlayBGView];
38 | }
39 |
40 | - (IBAction)playNetVideo:(id)sender {
41 | [self.vPlaying playUrl:@"http://pw80er50j.bkt.clouddn.com/videoplayback.mp4" onView:self.videoPlayBGView];
42 | }
43 |
44 | - (IBAction)playLocalVideo:(id)sender {
45 | NSString *urlStr = [[NSBundle mainBundle] pathForResource:@"xxsj" ofType:@"mp4"];
46 | [self.vPlaying playLocalPath:urlStr onView:self.videoPlayBGView];
47 | }
48 |
49 | @end
50 |
--------------------------------------------------------------------------------
/MIPlay/AVPlayerDemo_01/AVPlayerDemo_01/main.m:
--------------------------------------------------------------------------------
1 | //
2 | // main.m
3 | // AVPlayerDemo_01
4 | //
5 | // Created by mediaios on 2019/8/14.
6 | // Copyright © 2019 mediaios. All rights reserved.
7 | //
8 |
9 | #import
10 | #import "AppDelegate.h"
11 |
12 | int main(int argc, char * argv[]) {
13 | @autoreleasepool {
14 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/MIPlay/AVPlayerDemo_01/AVPlayerDemo_01Tests/AVPlayerDemo_01Tests.m:
--------------------------------------------------------------------------------
1 | //
2 | // AVPlayerDemo_01Tests.m
3 | // AVPlayerDemo_01Tests
4 | //
5 | // Created by mediaios on 2019/8/14.
6 | // Copyright © 2019 mediaios. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface AVPlayerDemo_01Tests : XCTestCase
12 |
13 | @end
14 |
15 | @implementation AVPlayerDemo_01Tests
16 |
17 | - (void)setUp {
18 | // Put setup code here. This method is called before the invocation of each test method in the class.
19 | }
20 |
21 | - (void)tearDown {
22 | // Put teardown code here. This method is called after the invocation of each test method in the class.
23 | }
24 |
25 | - (void)testExample {
26 | // This is an example of a functional test case.
27 | // Use XCTAssert and related functions to verify your tests produce the correct results.
28 | }
29 |
30 | - (void)testPerformanceExample {
31 | // This is an example of a performance test case.
32 | [self measureBlock:^{
33 | // Put the code you want to measure the time of here.
34 | }];
35 | }
36 |
37 | @end
38 |
--------------------------------------------------------------------------------
/MIPlay/AVPlayerDemo_01/AVPlayerDemo_01Tests/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | $(DEVELOPMENT_LANGUAGE)
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | BNDL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleVersion
20 | 1
21 |
22 |
23 |
--------------------------------------------------------------------------------
/MIPlay/AVPlayerDemo_01/AVPlayerDemo_01UITests/AVPlayerDemo_01UITests.m:
--------------------------------------------------------------------------------
1 | //
2 | // AVPlayerDemo_01UITests.m
3 | // AVPlayerDemo_01UITests
4 | //
5 | // Created by mediaios on 2019/8/14.
6 | // Copyright © 2019 mediaios. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface AVPlayerDemo_01UITests : XCTestCase
12 |
13 | @end
14 |
15 | @implementation AVPlayerDemo_01UITests
16 |
17 | - (void)setUp {
18 | // Put setup code here. This method is called before the invocation of each test method in the class.
19 |
20 | // In UI tests it is usually best to stop immediately when a failure occurs.
21 | self.continueAfterFailure = NO;
22 |
23 | // UI tests must launch the application that they test. Doing this in setup will make sure it happens for each test method.
24 | [[[XCUIApplication alloc] init] launch];
25 |
26 | // In UI tests it’s important to set the initial state - such as interface orientation - required for your tests before they run. The setUp method is a good place to do this.
27 | }
28 |
29 | - (void)tearDown {
30 | // Put teardown code here. This method is called after the invocation of each test method in the class.
31 | }
32 |
33 | - (void)testExample {
34 | // Use recording to get started writing UI tests.
35 | // Use XCTAssert and related functions to verify your tests produce the correct results.
36 | }
37 |
38 | @end
39 |
--------------------------------------------------------------------------------
/MIPlay/AVPlayerDemo_01/AVPlayerDemo_01UITests/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | $(DEVELOPMENT_LANGUAGE)
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | BNDL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleVersion
20 | 1
21 |
22 |
23 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # AVLive_Research
2 | ios音视频直播及播放技术预研总结
3 |
4 |
5 | ## 采集
6 |
7 | ### 视频采集
8 |
9 | * [介绍在ios设备上如何进行视频采集](https://juejin.im/post/5cdaee84e51d453a506b0f0f)
10 |
11 |
12 | ### 音频采集
13 |
14 | * [音频基础知识](https://juejin.im/post/5ced12e6f265da1b5d578bb5)
15 | * [Audio Queue Services Programming Guide](https://juejin.im/post/5cdb8a88518825123570f4f3)
16 | * [利用AudioQueue做音频采集编码和播放](https://juejin.im/post/5ced1568f265da1b6f4355b9)
17 | * audio unit
18 |
19 | ## 编码
20 |
21 | ### 视频编码
22 |
23 | * [视频的基本参数及H264编解码相关概念](https://juejin.im/post/5cf07dfdf265da1b8466ca8c)
24 | * [视频H264硬编码和软编码&编译ffmpeg库及环境搭建](https://juejin.im/post/5cf0cf63f265da1bc64ba8e0)
25 |
26 | * H265编码
27 | * H265硬编码
28 | * H265软编码(ffmpeg)
29 |
30 | ### 音频编码
31 |
32 | * [对音频的介绍以及音频格式介绍](https://juejin.im/post/5ced12e6f265da1b5d578bb5)
33 | * [利用`AudioToolBox`把音频PCM转化为AAC](https://juejin.im/post/5ced1568f265da1b6f4355b9)
34 | * 利用FFMPEG把PCM转化成AAC
35 |
36 | ## 对音视频做MUX
37 |
38 | * 把音频AAC和视频H264转化ASF文件
39 | * 把ASF文件转化成MP4文件
40 | * 把音频AAC和视频H264转化成其它格式的文件
41 |
42 | ## 推流
43 |
44 | * [在mac和centos服务器上搭建一个ngix,被用于做RTMP推流](https://juejin.im/post/5d1c1f2c6fb9a07ecb0bc32f)
45 | * [直播简单实现——利用librtm推流](https://juejin.im/post/5d1c1f2c6fb9a07ecb0bc32f)
46 | * 利用ffmpeg推流到rtmp服务
47 |
48 | ## 阶段成果
49 | 利用上面的知识点做一个推流SDK
50 |
51 |
52 | ## 音视频播放
53 |
54 | ### 视频播放
55 |
56 | * [利用AVPlayer播放本地和网络视频](https://github.com/mediaios/AVLive_Research/tree/master/MIPlay/AVPlayerDemo_01)
57 |
58 |
59 | ### OPenGL2的学习
60 | * 关于OPenGL
61 | * 关于定点着色器和片源着色器
62 |
63 |
64 |
65 |
66 |
--------------------------------------------------------------------------------
/imgs/20190518_aq_01.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mediaios/AVLive_Research/c41382a2e4dccbe4066423b5002280c0808b5031/imgs/20190518_aq_01.png
--------------------------------------------------------------------------------
/imgs/20190518_aq_02.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mediaios/AVLive_Research/c41382a2e4dccbe4066423b5002280c0808b5031/imgs/20190518_aq_02.png
--------------------------------------------------------------------------------
/imgs/20190518_aq_03.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mediaios/AVLive_Research/c41382a2e4dccbe4066423b5002280c0808b5031/imgs/20190518_aq_03.png
--------------------------------------------------------------------------------
/imgs/20190518_aq_04.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mediaios/AVLive_Research/c41382a2e4dccbe4066423b5002280c0808b5031/imgs/20190518_aq_04.png
--------------------------------------------------------------------------------
/imgs/20190518_aq_05.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mediaios/AVLive_Research/c41382a2e4dccbe4066423b5002280c0808b5031/imgs/20190518_aq_05.png
--------------------------------------------------------------------------------
/imgs/20190518_aq_06.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mediaios/AVLive_Research/c41382a2e4dccbe4066423b5002280c0808b5031/imgs/20190518_aq_06.png
--------------------------------------------------------------------------------
/imgs/20190518_aq_07.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mediaios/AVLive_Research/c41382a2e4dccbe4066423b5002280c0808b5031/imgs/20190518_aq_07.png
--------------------------------------------------------------------------------
/imgs/20190518_aq_08.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mediaios/AVLive_Research/c41382a2e4dccbe4066423b5002280c0808b5031/imgs/20190518_aq_08.png
--------------------------------------------------------------------------------
/imgs/20190518_aq_09.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mediaios/AVLive_Research/c41382a2e4dccbe4066423b5002280c0808b5031/imgs/20190518_aq_09.png
--------------------------------------------------------------------------------
/imgs/20190518_aq_10.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mediaios/AVLive_Research/c41382a2e4dccbe4066423b5002280c0808b5031/imgs/20190518_aq_10.png
--------------------------------------------------------------------------------
/imgs/20190518_aq_11.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mediaios/AVLive_Research/c41382a2e4dccbe4066423b5002280c0808b5031/imgs/20190518_aq_11.png
--------------------------------------------------------------------------------
/imgs/20190531_encoder_01.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mediaios/AVLive_Research/c41382a2e4dccbe4066423b5002280c0808b5031/imgs/20190531_encoder_01.png
--------------------------------------------------------------------------------
/imgs/20190531_encoder_02.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mediaios/AVLive_Research/c41382a2e4dccbe4066423b5002280c0808b5031/imgs/20190531_encoder_02.png
--------------------------------------------------------------------------------
/imgs/20190531_encoder_03.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mediaios/AVLive_Research/c41382a2e4dccbe4066423b5002280c0808b5031/imgs/20190531_encoder_03.png
--------------------------------------------------------------------------------
/imgs/20190531_encoder_04.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mediaios/AVLive_Research/c41382a2e4dccbe4066423b5002280c0808b5031/imgs/20190531_encoder_04.png
--------------------------------------------------------------------------------
/imgs/20190531_encoder_05.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mediaios/AVLive_Research/c41382a2e4dccbe4066423b5002280c0808b5031/imgs/20190531_encoder_05.png
--------------------------------------------------------------------------------
/imgs/20190531_encoder_06.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mediaios/AVLive_Research/c41382a2e4dccbe4066423b5002280c0808b5031/imgs/20190531_encoder_06.png
--------------------------------------------------------------------------------
/imgs/20190531_encoder_07.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mediaios/AVLive_Research/c41382a2e4dccbe4066423b5002280c0808b5031/imgs/20190531_encoder_07.png
--------------------------------------------------------------------------------
/imgs/20190531_encoder_08.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mediaios/AVLive_Research/c41382a2e4dccbe4066423b5002280c0808b5031/imgs/20190531_encoder_08.png
--------------------------------------------------------------------------------
/imgs/20190531_v_h264_01.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mediaios/AVLive_Research/c41382a2e4dccbe4066423b5002280c0808b5031/imgs/20190531_v_h264_01.png
--------------------------------------------------------------------------------
/imgs/20190531_v_h264_02.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mediaios/AVLive_Research/c41382a2e4dccbe4066423b5002280c0808b5031/imgs/20190531_v_h264_02.png
--------------------------------------------------------------------------------
/imgs/20190531_v_h264_03.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mediaios/AVLive_Research/c41382a2e4dccbe4066423b5002280c0808b5031/imgs/20190531_v_h264_03.png
--------------------------------------------------------------------------------
/imgs/20190531_v_h264_04.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mediaios/AVLive_Research/c41382a2e4dccbe4066423b5002280c0808b5031/imgs/20190531_v_h264_04.png
--------------------------------------------------------------------------------
/imgs/20190531_v_h264_05.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mediaios/AVLive_Research/c41382a2e4dccbe4066423b5002280c0808b5031/imgs/20190531_v_h264_05.png
--------------------------------------------------------------------------------
/imgs/20190531_v_h264_06.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mediaios/AVLive_Research/c41382a2e4dccbe4066423b5002280c0808b5031/imgs/20190531_v_h264_06.png
--------------------------------------------------------------------------------
/imgs/20190531_v_h264_07.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mediaios/AVLive_Research/c41382a2e4dccbe4066423b5002280c0808b5031/imgs/20190531_v_h264_07.png
--------------------------------------------------------------------------------
/imgs/20190531_v_h264_08.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mediaios/AVLive_Research/c41382a2e4dccbe4066423b5002280c0808b5031/imgs/20190531_v_h264_08.png
--------------------------------------------------------------------------------
/imgs/20190531_v_h264_09.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mediaios/AVLive_Research/c41382a2e4dccbe4066423b5002280c0808b5031/imgs/20190531_v_h264_09.png
--------------------------------------------------------------------------------
/imgs/20190531_v_h264_10.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mediaios/AVLive_Research/c41382a2e4dccbe4066423b5002280c0808b5031/imgs/20190531_v_h264_10.png
--------------------------------------------------------------------------------
/imgs/20190531_v_h264_11.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mediaios/AVLive_Research/c41382a2e4dccbe4066423b5002280c0808b5031/imgs/20190531_v_h264_11.png
--------------------------------------------------------------------------------
/imgs/20190531_v_h264_12.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mediaios/AVLive_Research/c41382a2e4dccbe4066423b5002280c0808b5031/imgs/20190531_v_h264_12.png
--------------------------------------------------------------------------------
/imgs/20190531_v_h264_13.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mediaios/AVLive_Research/c41382a2e4dccbe4066423b5002280c0808b5031/imgs/20190531_v_h264_13.png
--------------------------------------------------------------------------------
/imgs/20190531_v_h264_14.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mediaios/AVLive_Research/c41382a2e4dccbe4066423b5002280c0808b5031/imgs/20190531_v_h264_14.png
--------------------------------------------------------------------------------
/imgs/20190703-rtmp_01.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mediaios/AVLive_Research/c41382a2e4dccbe4066423b5002280c0808b5031/imgs/20190703-rtmp_01.png
--------------------------------------------------------------------------------
/imgs/20190703-rtmp_02.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mediaios/AVLive_Research/c41382a2e4dccbe4066423b5002280c0808b5031/imgs/20190703-rtmp_02.png
--------------------------------------------------------------------------------
/imgs/20190703-rtmp_03.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mediaios/AVLive_Research/c41382a2e4dccbe4066423b5002280c0808b5031/imgs/20190703-rtmp_03.png
--------------------------------------------------------------------------------
/imgs/20190703-rtmp_04.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mediaios/AVLive_Research/c41382a2e4dccbe4066423b5002280c0808b5031/imgs/20190703-rtmp_04.png
--------------------------------------------------------------------------------
/imgs/20190703-rtmp_05.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mediaios/AVLive_Research/c41382a2e4dccbe4066423b5002280c0808b5031/imgs/20190703-rtmp_05.png
--------------------------------------------------------------------------------
/imgs/20190703-rtmp_06.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mediaios/AVLive_Research/c41382a2e4dccbe4066423b5002280c0808b5031/imgs/20190703-rtmp_06.png
--------------------------------------------------------------------------------
/imgs/20190703-rtmp_07.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mediaios/AVLive_Research/c41382a2e4dccbe4066423b5002280c0808b5031/imgs/20190703-rtmp_07.png
--------------------------------------------------------------------------------
/imgs/20190703-rtmp_08.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mediaios/AVLive_Research/c41382a2e4dccbe4066423b5002280c0808b5031/imgs/20190703-rtmp_08.png
--------------------------------------------------------------------------------
/imgs/20190703-rtmp_09.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mediaios/AVLive_Research/c41382a2e4dccbe4066423b5002280c0808b5031/imgs/20190703-rtmp_09.png
--------------------------------------------------------------------------------
/imgs/20190703-rtmp_10.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mediaios/AVLive_Research/c41382a2e4dccbe4066423b5002280c0808b5031/imgs/20190703-rtmp_10.png
--------------------------------------------------------------------------------
/imgs/20190703-rtmp_11.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mediaios/AVLive_Research/c41382a2e4dccbe4066423b5002280c0808b5031/imgs/20190703-rtmp_11.png
--------------------------------------------------------------------------------
/imgs/20190703-rtmp_12.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mediaios/AVLive_Research/c41382a2e4dccbe4066423b5002280c0808b5031/imgs/20190703-rtmp_12.png
--------------------------------------------------------------------------------
/imgs/20190703-rtmp_13.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mediaios/AVLive_Research/c41382a2e4dccbe4066423b5002280c0808b5031/imgs/20190703-rtmp_13.png
--------------------------------------------------------------------------------
/imgs/prj_01.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mediaios/AVLive_Research/c41382a2e4dccbe4066423b5002280c0808b5031/imgs/prj_01.png
--------------------------------------------------------------------------------