15 #ifndef SHAKA_EMBEDDED_MEDIA_FFMPEG_FFMPEG_DEMUXER_H_ 16 #define SHAKA_EMBEDDED_MEDIA_FFMPEG_FFMPEG_DEMUXER_H_ 19 #include <libavformat/avformat.h> 43 const std::string& container);
46 void Reset()
override;
48 bool Demux(
double timestamp_offset,
const uint8_t* data,
size_t size,
49 std::vector<std::shared_ptr<EncodedFrame>>*
frames)
override;
58 template <
typename T,
void (*Free)(T**)>
60 void operator()(T* obj) {
64 using CodecParameters =
65 std::unique_ptr<AVCodecParameters,
66 AVFree<AVCodecParameters, &avcodec_parameters_free>>;
68 std::unique_ptr<AVFormatContext,
69 AVFree<AVFormatContext, &avformat_close_input>>;
71 static int OnRead(
void* user, uint8_t* buffer,
int size);
76 void UpdateEncryptionInfo();
81 const std::string mime_type_;
82 const std::string container_;
86 std::shared_ptr<const StreamInfo> cur_stream_info_;
88 FormatContext demuxer_ctx_;
92 std::vector<std::shared_ptr<EncodedFrame>>* output_;
93 double timestamp_offset_;
94 const uint8_t* input_;
105 bool IsTypeSupported(
const std::string& mime_type)
const override;
106 bool IsCodecVideo(
const std::string& codec)
const override;
108 std::unique_ptr<Demuxer> Create(
const std::string& mime_type,
116 #endif // SHAKA_EMBEDDED_MEDIA_FFMPEG_FFMPEG_DEMUXER_H_
std::list< std::shared_ptr< BaseFrame > > frames