Index: services/media/framework_ffmpeg/ffmpeg_formatting.cc |
diff --git a/services/media/framework_ffmpeg/ffmpeg_formatting.cc b/services/media/framework_ffmpeg/ffmpeg_formatting.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..2367311601861e9ec1cc2e31079d226311ed6d5d |
--- /dev/null |
+++ b/services/media/framework_ffmpeg/ffmpeg_formatting.cc |
@@ -0,0 +1,805 @@ |
+// Copyright 2016 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#include <ostream> |
+ |
+#include "services/media/framework_ffmpeg/ffmpeg_formatting.h" |
+extern "C" { |
+#include "third_party/ffmpeg/libavformat/avformat.h" |
+#include "third_party/ffmpeg/libavformat/internal.h" |
+#include "third_party/ffmpeg/libavutil/dict.h" |
+} |
+ |
+namespace mojo { |
+namespace media { |
+ |
+const char* safe(const char* s) { |
+ return s == nullptr ? "<nullptr>" : s; |
+} |
+ |
+std::ostream& operator<<( |
+ std::ostream& os, |
+ const struct AVCodecTag *const *value) { |
+ if (value == nullptr) { |
+ return os << "<nullptr>" << std::endl; |
+ } else if (*value == nullptr) { |
+ return os << "&<nullptr>" << std::endl; |
+ } else { |
+ os << std::endl; |
+ } |
+ |
+ os << indent; |
+ os << begl << "AVCodecID id: " << (*value)->id << std::endl; |
+ os << begl << "unsigned int tag: " << (*value)->tag << std::endl; |
+ return os << outdent; |
+} |
+ |
+std::ostream& operator<<(std::ostream& os, const AVInputFormat *value) { |
+ if (value == nullptr) { |
+ return os << "<nullptr>" << std::endl; |
+ } else { |
+ os << std::endl; |
+ } |
+ |
+ os << indent; |
+ os << begl << "const char *name: " << value->name << std::endl; |
+ os << begl << "const char *long_name: " << value->long_name << std::endl; |
+ os << begl << "int flags: " << AVFMTFlags(value->flags); |
+ os << begl << "const char *extensions: " << safe(value->extensions) |
+ << std::endl; |
+ os << begl << "const AVCodecTag * const *codec_tag: " << value->codec_tag; |
+ os << begl << "const char *mime_type: " << safe(value->mime_type) |
+ << std::endl; |
+ return os << outdent; |
+} |
+ |
+std::ostream& operator<<(std::ostream& os, const AVOutputFormat *value) { |
+ if (value == nullptr) { |
+ return os << "<nullptr>" << std::endl; |
+ } else { |
+ os << std::endl; |
+ } |
+ |
+ os << indent; |
+ os << begl << "const char *name: " << safe(value->name) << std::endl; |
+ os << begl << "const char *long_name: " << safe(value->long_name) |
+ << std::endl; |
+ os << begl << "const char *mime_type: " << safe(value->mime_type) |
+ << std::endl; |
+ os << begl << "const char *extensions: " << safe(value->extensions) |
+ << std::endl; |
+ os << begl << "AVCodecID audio_codec: " << value->audio_codec; |
+ os << begl << "AVCodecID video_codec: " << value->video_codec; |
+ os << begl << "AVCodecID subtitle_codec: " << value->subtitle_codec; |
+ os << begl << "int flags: " << AVFMTFlags(value->flags); |
+ os << begl << "const AVCodecTag * const *codec_tag: " << value->codec_tag; |
+ return os << outdent; |
+} |
+ |
+std::ostream& operator<<(std::ostream& os, const AVIOContext *value) { |
+ if (value == nullptr) { |
+ return os << "<nullptr>" << std::endl; |
+ } else { |
+ return os << "TODO" << std::endl; |
+ } |
+} |
+ |
+std::ostream& operator<<(std::ostream& os, AVFMTCTXFlags value) { |
+ if (value.flags_ == 0) { |
+ return os << "<none>" << std::endl; |
+ } |
+ |
+ if (value.flags_ & AVFMTCTX_NOHEADER) { |
+ return os << "AVFMTCTX_NOHEADER" << std::endl; |
+ } else { |
+ return os << "<UNKNOWN AVFMTCTX_: " << value.flags_ << ">" << std::endl; |
+ } |
+} |
+ |
+std::ostream& operator<<(std::ostream& os, const AVRational *value) { |
+ if (value == nullptr) { |
+ return os << "<none>" << std::endl; |
+ } else { |
+ os << std::endl; |
+ } |
+ |
+ os << indent; |
+ for (int index = 0; value->num != 0 || value->den != 0; ++value, ++index) { |
+ os << begl << "[" << index << "]: " << *value; |
+ } |
+ return os << outdent; |
+} |
+ |
+std::ostream& operator<<(std::ostream& os, const int *value) { |
+ if (value == nullptr) { |
+ return os << "<none>" << std::endl; |
+ } else { |
+ os << std::endl; |
+ } |
+ |
+ os << indent; |
+ for (int index = 0; *value != 0; ++value, ++index) { |
+ os << begl << "[" << index << "]: " << *value << std::endl; |
+ } |
+ return os << outdent; |
+} |
+ |
+std::ostream& operator<<(std::ostream& os, const uint64_t *value) { |
+ if (value == nullptr) { |
+ return os << "<none>" << std::endl; |
+ } else { |
+ os << std::endl; |
+ } |
+ |
+ os << indent; |
+ for (int index = 0; *value != 0; ++value, ++index) { |
+ os << begl << "[" << index << "]: " << *value << std::endl; |
+ } |
+ return os << outdent; |
+} |
+ |
+std::ostream& operator<<(std::ostream& os, const AVSampleFormat *value) { |
+ if (value == nullptr) { |
+ return os << "<none>" << std::endl; |
+ } else { |
+ os << std::endl; |
+ } |
+ |
+ os << indent; |
+ for (int index = 0; int(*value) != 0; ++value, ++index) { |
+ os << begl << "[" << index << "]: " << *value; |
+ } |
+ return os << outdent; |
+} |
+ |
+std::ostream& operator<<(std::ostream& os, const AVCodec *value) { |
+ if (value == nullptr) { |
+ return os << "<nullptr>" << std::endl; |
+ } else { |
+ os << std::endl; |
+ } |
+ |
+ os << indent; |
+ os << begl << "const char *name: " << safe(value->name) << std::endl; |
+ os << begl << "const char *long_name: " << safe(value->long_name) |
+ << std::endl; |
+ os << begl << "AVMediaType type: " << value->type; |
+ os << begl << "AVCodecID id: " << value->id; |
+ os << begl << "int capabilities: " << value->capabilities << std::endl; |
+ os << begl << "AVRational *supported_framerates: " |
+ << value->supported_framerates; |
+ os << begl << "const int *supported_samplerates: " |
+ << value->supported_samplerates; |
+ os << begl << "const AVSampleFormat *sample_fmts: " << value->sample_fmts; |
+ os << begl << "const uint64_t *channel_layouts: " << value->channel_layouts; |
+ |
+ return os << outdent; |
+} |
+ |
+std::ostream& operator<<(std::ostream& os, const AVCodecContext *value) { |
+ if (value == nullptr) { |
+ return os << "<nullptr>" << std::endl; |
+ } else { |
+ os << std::endl; |
+ } |
+ |
+ os << indent; |
+ os << begl << "AVMediaType codec_type: " << value->codec_type; |
+ os << begl << "const struct AVCodec *codec: " << value->codec; |
+ os << begl << "AVCodecID codec_id: " << value->codec_id; |
+ os << begl << "int bit_rate: " << value->bit_rate << std::endl; |
+ os << begl << "int extradata_size: " << value->extradata_size << std::endl; |
+ os << begl << "int width: " << value->width << std::endl; |
+ os << begl << "int height: " << value->height << std::endl; |
+ os << begl << "int coded_width: " << value->coded_width << std::endl; |
+ os << begl << "int coded_height: " << value->coded_height << std::endl; |
+ os << begl << "int gop_size: " << value->gop_size << std::endl; |
+ os << begl << "int sample_rate: " << value->sample_rate << std::endl; |
+ os << begl << "int channels: " << value->channels << std::endl; |
+ os << begl << "AVSampleFormat sample_fmt: " << value->sample_fmt; |
+ os << begl << "int frame_size: " << value->frame_size << std::endl; |
+ os << begl << "int frame_number: " << value->frame_number << std::endl; |
+ os << begl << "int block_align: " << value->block_align << std::endl; |
+ os << begl << "int cutoff: " << value->cutoff << std::endl; |
+ os << begl << "uint64_t channel_layout: " << value->channel_layout |
+ << std::endl; |
+ os << begl << "uint64_t request_channel_layout: " |
+ << value->request_channel_layout << std::endl; |
+ os << begl << "AVAudioServiceType audio_service_type: " |
+ << value->audio_service_type << std::endl; |
+ os << begl << "AVSampleFormat request_sample_fmt: " |
+ << value->request_sample_fmt; |
+ os << begl << "int profile: " << value->profile << std::endl; |
+ return os << outdent; |
+} |
+ |
+std::ostream& operator<<(std::ostream& os, const AVRational& value) { |
+ return os << value.num << "/" << value.den << std::endl; |
+} |
+ |
+std::ostream& operator<<(std::ostream& os, const AVStream *value) { |
+ if (value == nullptr) { |
+ return os << "<nullptr>" << std::endl; |
+ } else { |
+ os << std::endl; |
+ } |
+ |
+ os << indent; |
+ os << begl << "int index: " << value->index << std::endl; |
+ os << begl << "int id: " << value->id << std::endl; |
+ os << begl << "AVCodecContext *codec: " << value->codec; |
+ os << begl << "AVRational time_base: " << value->time_base; |
+ os << begl << "int64_t start_time: " << value->start_time << std::endl; |
+ os << begl << "int64_t duration: " << value->duration << std::endl; |
+ os << begl << "int64_t nb_frames: " << value->nb_frames << std::endl; |
+ os << begl << "int disposition: " << AV_DISPOSITIONFlags(value->disposition); |
+ os << begl << "AVDiscard discard: " << value->discard; |
+ os << begl << "AVRational sample_aspect_ratio: " |
+ << value->sample_aspect_ratio; |
+ os << begl << "AVDictionary *metadata: " << value->metadata; |
+ os << begl << "AVRational avg_frame_rate: " << value->avg_frame_rate; |
+ os << begl << "AVPacket attached_pic: " << &value->attached_pic; |
+ os << begl << "int nb_side_data: " << value->nb_side_data << std::endl; |
+ os << begl << "AVPacketSideData side_data: " << |
+ AVPacketSideDataArray(value->side_data, value->nb_side_data); |
+ os << begl << "int event_flags: " << AVSTREAM_EVENTFlags(value->event_flags); |
+ return os << outdent; |
+} |
+ |
+std::ostream& operator<<(std::ostream& os, const AVStreamArray& value) { |
+ if (value.items_ == nullptr) { |
+ return os << "<nullptr>" << std::endl; |
+ } else if (value.count_ == 0) { |
+ return os << "<empty>" << std::endl; |
+ } else { |
+ os << std::endl; |
+ } |
+ |
+ os << indent; |
+ for (unsigned int i = 0; i < value.count_; i++) { |
+ os << begl << "[" << i << "] " << value.items_[i]; |
+ } |
+ return os << outdent; |
+} |
+ |
+std::ostream& operator<<(std::ostream& os, AVFMTFlags value) { |
+ if (value.flags_ == 0) { |
+ os << "<none>" << std::endl; |
+ return os; |
+ } else { |
+ os << std::endl; |
+ } |
+ |
+ os << indent; |
+ if (value.flags_ & AVFMT_FLAG_GENPTS) { |
+ os << begl << "AVFMT_FLAG_GENPTS" << std::endl; |
+ } |
+ if (value.flags_ & AVFMT_FLAG_IGNIDX) { |
+ os << begl << "AVFMT_FLAG_IGNIDX" << std::endl; |
+ } |
+ if (value.flags_ & AVFMT_FLAG_NONBLOCK) { |
+ os << begl << "AVFMT_FLAG_NONBLOCK" << std::endl; |
+ } |
+ if (value.flags_ & AVFMT_FLAG_IGNDTS) { |
+ os << begl << "AVFMT_FLAG_IGNDTS" << std::endl; |
+ } |
+ if (value.flags_ & AVFMT_FLAG_NOFILLIN) { |
+ os << begl << "AVFMT_FLAG_NOFILLIN" << std::endl; |
+ } |
+ if (value.flags_ & AVFMT_FLAG_NOPARSE) { |
+ os << begl << "AVFMT_FLAG_NOPARSE" << std::endl; |
+ } |
+ if (value.flags_ & AVFMT_FLAG_NOBUFFER) { |
+ os << begl << "AVFMT_FLAG_NOBUFFER" << std::endl; |
+ } |
+ if (value.flags_ & AVFMT_FLAG_CUSTOM_IO) { |
+ os << begl << "AVFMT_FLAG_CUSTOM_IO" << std::endl; |
+ } |
+ if (value.flags_ & AVFMT_FLAG_DISCARD_CORRUPT) { |
+ os << begl << "AVFMT_FLAG_DISCARD_CORRUPT" << std::endl; |
+ } |
+ if (value.flags_ & AVFMT_FLAG_FLUSH_PACKETS) { |
+ os << begl << "AVFMT_FLAG_FLUSH_PACKETS" << std::endl; |
+ } |
+ if (value.flags_ & AVFMT_FLAG_BITEXACT) { |
+ os << begl << "AVFMT_FLAG_BITEXACT" << std::endl; |
+ } |
+ if (value.flags_ & AVFMT_FLAG_MP4A_LATM) { |
+ os << begl << "AVFMT_FLAG_MP4A_LATM" << std::endl; |
+ } |
+ if (value.flags_ & AVFMT_FLAG_SORT_DTS) { |
+ os << begl << "AVFMT_FLAG_SORT_DTS" << std::endl; |
+ } |
+ if (value.flags_ & AVFMT_FLAG_PRIV_OPT) { |
+ os << begl << "AVFMT_FLAG_PRIV_OPT" << std::endl; |
+ } |
+ if (value.flags_ & AVFMT_FLAG_KEEP_SIDE_DATA) { |
+ os << begl << "AVFMT_FLAG_KEEP_SIDE_DATA" << std::endl; |
+ } |
+ if (value.flags_ & AVFMT_FLAG_FAST_SEEK) { |
+ os << begl << "AVFMT_FLAG_FAST_SEEK" << std::endl; |
+ } |
+ return os << outdent; |
+} |
+ |
+std::ostream& operator<<(std::ostream& os, AV_DISPOSITIONFlags value) { |
+ if (value.flags_ == 0) { |
+ os << "<none>" << std::endl; |
+ return os; |
+ } else { |
+ os << std::endl; |
+ } |
+ |
+ os << indent; |
+ if (value.flags_ & AV_DISPOSITION_DEFAULT) { |
+ os << begl << "AV_DISPOSITION_DEFAULT 0x0001" << std::endl; |
+ } |
+ if (value.flags_ & AV_DISPOSITION_DUB) { |
+ os << begl << "AV_DISPOSITION_DUB 0x0002" << std::endl; |
+ } |
+ if (value.flags_ & AV_DISPOSITION_ORIGINAL) { |
+ os << begl << "AV_DISPOSITION_ORIGINAL 0x0004" << std::endl; |
+ } |
+ if (value.flags_ & AV_DISPOSITION_COMMENT) { |
+ os << begl << "AV_DISPOSITION_COMMENT 0x0008" << std::endl; |
+ } |
+ if (value.flags_ & AV_DISPOSITION_LYRICS) { |
+ os << begl << "AV_DISPOSITION_LYRICS 0x0010" << std::endl; |
+ } |
+ if (value.flags_ & AV_DISPOSITION_KARAOKE) { |
+ os << begl << "AV_DISPOSITION_KARAOKE 0x0020" << std::endl; |
+ } |
+ return os << outdent; |
+} |
+ |
+std::ostream& operator<<(std::ostream& os, const AVBufferRef *value) { |
+ if (value == nullptr) { |
+ return os << "<nullptr>" << std::endl; |
+ } else { |
+ os << std::endl; |
+ } |
+ |
+ os << indent; |
+ os << begl << "AVBuffer *buffer: " |
+ << (value->buffer == nullptr ? "<nullptr>" : "TODO") << std::endl; |
+ os << begl << "uint8_t *data: " |
+ << (value->data == nullptr ? "<nullptr>" : "<opaque>") << std::endl; |
+ os << begl << "int size: " << value->size << std::endl; |
+ return os << outdent; |
+} |
+ |
+std::ostream& operator<<(std::ostream& os, const AVFrame *value) { |
+ if (value == nullptr) { |
+ return os << "<nullptr>" << std::endl; |
+ } else { |
+ os << std::endl; |
+ } |
+ |
+ os << indent; |
+ os << begl << "uint8_t *data[AV_NUM_DATA_POINTERS]: "; |
+ { |
+ os << indent; |
+ bool any = false; |
+ for (int i = 0; i < AV_NUM_DATA_POINTERS; i++) { |
+ if (value->data[i] != nullptr) { |
+ if (!any) { |
+ any = true; |
+ os << std::endl; |
+ } |
+ os << begl << "[" << i << "]: <opaque>" << std::endl; |
+ } |
+ } |
+ if (!any) { |
+ os << "<all nullptr>" << std::endl; |
+ } |
+ os << outdent; |
+ } |
+ |
+ os << begl << "int linesize[AV_NUM_DATA_POINTERS]: "; |
+ { |
+ os << indent; |
+ bool any = false; |
+ for (int i = 0; i < AV_NUM_DATA_POINTERS; i++) { |
+ if (value->linesize[i] != 0) { |
+ if (!any) { |
+ any = true; |
+ os << std::endl; |
+ } |
+ os << begl << "[" << i << "]: " << value->linesize[i] << std::endl; |
+ } |
+ } |
+ if (!any) { |
+ os << "<all zero>" << std::endl; |
+ } |
+ os << outdent; |
+ } |
+ |
+ os << begl << "uint8_t **extended_data: " |
+ << (value->extended_data == nullptr ? "<nullptr>" : "<opaque>") |
+ << std::endl; |
+ os << begl << "int width: " << value->width << std::endl; |
+ os << begl << "int height: " << value->height << std::endl; |
+ os << begl << "int nb_samples: " << value->nb_samples << std::endl; |
+ os << begl << "int format: " << value->format << std::endl; |
+ os << begl << "int key_frame: " << value->key_frame << std::endl; |
+ os << begl << "int64_t pts: " << value->pts << std::endl; |
+ os << begl << "int64_t pkt_pts: " << value->pkt_pts << std::endl; |
+ os << begl << "int64_t pkt_dts: " << value->pkt_dts << std::endl; |
+ os << begl << "int sample_rate: " << value->sample_rate << std::endl; |
+ os << begl << "AVBufferRef *buf[AV_NUM_DATA_POINTERS]: "; |
+ { |
+ os << indent; |
+ bool any = false; |
+ for (int i = 0; i < AV_NUM_DATA_POINTERS; i++) { |
+ if (value->buf[i] != nullptr) { |
+ if (!any) { |
+ any = true; |
+ os << std::endl; |
+ } |
+ os << begl << "[" << i << "]:" << value->buf[i]; |
+ } |
+ } |
+ if (!any) { |
+ os << "<all nullptr>" << std::endl; |
+ } |
+ os << outdent; |
+ } |
+ os << begl << "int channels: " << value->channels << std::endl; |
+ os << begl << "int pkt_size: " << value->pkt_size << std::endl; |
+ return os << outdent; |
+} |
+ |
+std::ostream& operator<<(std::ostream& os, const AVPacket *value) { |
+ if (value == nullptr) { |
+ return os << "<nullptr>" << std::endl; |
+ } else { |
+ os << std::endl; |
+ } |
+ |
+ os << indent; |
+ os << begl << "AVBufferRef *buf: " << value->buf; |
+ os << begl << "int64_t pts: " << value->pts << std::endl; |
+ os << begl << "int64_t dts: " << value->dts << std::endl; |
+ os << begl << "uint8_t *data: " |
+ << (value->data == nullptr ? "<nullptr>" : "<opaque>") << std::endl; |
+ os << begl << "int size: " << value->size << std::endl; |
+ os << begl << "int stream_index: " << value->stream_index << std::endl; |
+ os << begl << "int flags: " << value->flags << std::endl; |
+ os << begl << "AVPacketSideData *side_data: " << value->side_data; |
+ os << begl << "int side_data_elems: " << value->side_data_elems << std::endl; |
+ os << begl << "int duration: " << value->duration << std::endl; |
+ os << begl << "int64_t pos: " << value->pos << std::endl; |
+ os << begl << "int64_t convergence_duration: " |
+ << value->convergence_duration << std::endl; |
+ return os << outdent; |
+} |
+ |
+std::ostream& operator<<(std::ostream& os, const AVPacketSideData *value) { |
+ if (value == nullptr) { |
+ return os << "<nullptr>" << std::endl; |
+ } else { |
+ return os << "TODO" << std::endl; |
+ } |
+} |
+ |
+std::ostream& operator<<(std::ostream& os, const AVPacketSideDataArray& value) { |
+ if (value.items_ == nullptr) { |
+ return os << "<nullptr>" << std::endl; |
+ } else if (value.count_ == 0) { |
+ return os << "<empty>" << std::endl; |
+ } else { |
+ os << std::endl; |
+ } |
+ |
+ os << indent; |
+ for (unsigned int i = 0; i < value.count_; i++) { |
+ os << begl << "[" << i << "] " << &value.items_[i]; |
+ } |
+ return os << outdent; |
+} |
+ |
+std::ostream& operator<<(std::ostream& os, const AVProgram *value) { |
+ if (value == nullptr) { |
+ return os << "<nullptr>" << std::endl; |
+ } else { |
+ return os << "TODO" << std::endl; |
+ } |
+} |
+ |
+std::ostream& operator<<(std::ostream& os, const AVProgramArray& value) { |
+ if (value.items_ == nullptr) { |
+ return os << "<nullptr>" << std::endl; |
+ } else if (value.count_ == 0) { |
+ return os << "<empty>" << std::endl; |
+ } else { |
+ os << std::endl; |
+ } |
+ |
+ os << indent; |
+ for (unsigned int i = 0; i < value.count_; i++) { |
+ os << begl << "[" << i << "]" << value.items_[i]; |
+ } |
+ return os << outdent; |
+} |
+ |
+std::ostream& operator<<(std::ostream& os, const AVChapter *value) { |
+ if (value == nullptr) { |
+ return os << "<nullptr>" << std::endl; |
+ } else { |
+ return os << "TODO" << std::endl; |
+ } |
+} |
+ |
+std::ostream& operator<<(std::ostream& os, const AVChapterArray& value) { |
+ if (value.items_ == nullptr) { |
+ return os << "<nullptr>" << std::endl; |
+ } else if (value.count_ == 0) { |
+ return os << "<empty>" << std::endl; |
+ } else { |
+ os << std::endl; |
+ } |
+ |
+ os << indent; |
+ for (unsigned int i = 0; i < value.count_; i++) { |
+ os << begl << "[" << i << "]" << value.items_[i]; |
+ } |
+ return os << outdent; |
+} |
+ |
+std::ostream& operator<<(std::ostream& os, AVCodecID value) { |
+ return os << avcodec_get_name(value) << " (" << static_cast<int>(value) << ")" |
+ << std::endl; |
+} |
+ |
+std::ostream& operator<<(std::ostream& os, const AVDictionary *value) { |
+ if (value == nullptr) { |
+ return os << "<nullptr>" << std::endl; |
+ } |
+ AVDictionaryEntry *entry = |
+ av_dict_get(value, "", nullptr, AV_DICT_IGNORE_SUFFIX); |
+ if (entry == nullptr) { |
+ return os << "<empty>" << std::endl; |
+ } |
+ os << std::endl; |
+ |
+ os << indent; |
+ while (entry != nullptr) { |
+ os << begl << safe(entry->key) << ": " << safe(entry->value) << std::endl; |
+ entry = av_dict_get(value, "", entry, AV_DICT_IGNORE_SUFFIX); |
+ } |
+ return os << outdent; |
+} |
+ |
+std::ostream& operator<<(std::ostream& os, AVFMT_EVENTFlags value) { |
+ if (value.flags_ == 0) { |
+ os << "<none>" << std::endl; |
+ return os; |
+ } |
+ |
+ if (value.flags_ & AVFMT_EVENT_FLAG_METADATA_UPDATED) { |
+ return os << "AVFMT_EVENT_FLAG_METADATA_UPDATED" << std::endl; |
+ } else { |
+ return os << "<UNKNOWN AVFMT_EVENT_FLAG_: " << value.flags_ << ">" |
+ << std::endl; |
+ } |
+} |
+ |
+std::ostream& operator<<(std::ostream& os, AVSTREAM_EVENTFlags value) { |
+ if (value.flags_ == 0) { |
+ os << "<none>" << std::endl; |
+ return os; |
+ } |
+ |
+ if (value.flags_ & AVSTREAM_EVENT_FLAG_METADATA_UPDATED) { |
+ return os << "AVSTREAM_EVENT_FLAG_METADATA_UPDATED" << std::endl; |
+ } else { |
+ return os << "<UNKNOWN AVSTREAM_EVENT_FLAG_: " << value.flags_ << ">" |
+ << std::endl; |
+ } |
+} |
+ |
+std::ostream& operator<<(std::ostream& os, AVFMT_AVOID_NEG_TSFlags value) { |
+ switch (value.flags_) { |
+ case AVFMT_AVOID_NEG_TS_AUTO: |
+ return os << "AVFMT_AVOID_NEG_TS_AUTO" << std::endl; |
+ case AVFMT_AVOID_NEG_TS_MAKE_NON_NEGATIVE: |
+ return os << "AVFMT_AVOID_NEG_TS_MAKE_NON_NEGATIVE" << std::endl; |
+ case AVFMT_AVOID_NEG_TS_MAKE_ZERO: |
+ return os << "AVFMT_AVOID_NEG_TS_MAKE_ZERO" << std::endl; |
+ default: |
+ return os << "<UNKNOWN AVFMT_AVOID_NEG_TS_: " << value.flags_ << ">" |
+ << std::endl; |
+ } |
+} |
+ |
+std::ostream& operator<<(std::ostream& os, AVMediaType value) { |
+ switch (value) { |
+ case AVMEDIA_TYPE_UNKNOWN: |
+ return os << "AVMEDIA_TYPE_UNKNOWN" << std::endl; |
+ case AVMEDIA_TYPE_VIDEO: |
+ return os << "AVMEDIA_TYPE_VIDEO" << std::endl; |
+ case AVMEDIA_TYPE_AUDIO: |
+ return os << "AVMEDIA_TYPE_AUDIO" << std::endl; |
+ case AVMEDIA_TYPE_DATA: |
+ return os << "AVMEDIA_TYPE_DATA" << std::endl; |
+ case AVMEDIA_TYPE_SUBTITLE: |
+ return os << "AVMEDIA_TYPE_SUBTITLE" << std::endl; |
+ case AVMEDIA_TYPE_ATTACHMENT: |
+ return os << "AVMEDIA_TYPE_ATTACHMENT" << std::endl; |
+ case AVMEDIA_TYPE_NB: |
+ return os << "AVMEDIA_TYPE_NB" << std::endl; |
+ default: |
+ return os << "<UNKNOWN AVMediaType: " << static_cast<int>(value) << ">" |
+ << std::endl; |
+ } |
+} |
+ |
+std::ostream& operator<<(std::ostream& os, AVSampleFormat value) { |
+ switch (value) { |
+ case AV_SAMPLE_FMT_NONE: |
+ return os << "AV_SAMPLE_FMT_NONE" << std::endl; |
+ case AV_SAMPLE_FMT_U8: |
+ return os << "AV_SAMPLE_FMT_U8" << std::endl; |
+ case AV_SAMPLE_FMT_S16: |
+ return os << "AV_SAMPLE_FMT_S16" << std::endl; |
+ case AV_SAMPLE_FMT_S32: |
+ return os << "AV_SAMPLE_FMT_S32" << std::endl; |
+ case AV_SAMPLE_FMT_FLT: |
+ return os << "AV_SAMPLE_FMT_FLT" << std::endl; |
+ case AV_SAMPLE_FMT_DBL: |
+ return os << "AV_SAMPLE_FMT_DBL" << std::endl; |
+ case AV_SAMPLE_FMT_U8P: |
+ return os << "AV_SAMPLE_FMT_U8P" << std::endl; |
+ case AV_SAMPLE_FMT_S16P: |
+ return os << "AV_SAMPLE_FMT_S16P" << std::endl; |
+ case AV_SAMPLE_FMT_S32P: |
+ return os << "AV_SAMPLE_FMT_S32P" << std::endl; |
+ case AV_SAMPLE_FMT_FLTP: |
+ return os << "AV_SAMPLE_FMT_FLTP" << std::endl; |
+ case AV_SAMPLE_FMT_DBLP: |
+ return os << "AV_SAMPLE_FMT_DBLP" << std::endl; |
+ case AV_SAMPLE_FMT_NB: |
+ return os << "AV_SAMPLE_FMT_NB" << std::endl; |
+ default: |
+ return os << "<UNKNOWN AVSampleFormat: " << static_cast<int>(value) << ">" |
+ << std::endl; |
+ } |
+} |
+ |
+std::ostream& operator<<(std::ostream& os, AVColorSpace value) { |
+ switch (value) { |
+ case AVCOL_SPC_RGB: |
+ return os << "AVCOL_SPC_RGB" << std::endl; |
+ case AVCOL_SPC_BT709: |
+ return os << "AVCOL_SPC_BT709" << std::endl; |
+ case AVCOL_SPC_UNSPECIFIED: |
+ return os << "AVCOL_SPC_UNSPECIFIED" << std::endl; |
+ case AVCOL_SPC_RESERVED: |
+ return os << "AVCOL_SPC_RESERVED" << std::endl; |
+ case AVCOL_SPC_FCC: |
+ return os << "AVCOL_SPC_FCC" << std::endl; |
+ case AVCOL_SPC_BT470BG: |
+ return os << "AVCOL_SPC_BT470BG" << std::endl; |
+ case AVCOL_SPC_SMPTE170M: |
+ return os << "AVCOL_SPC_SMPTE170M" << std::endl; |
+ case AVCOL_SPC_SMPTE240M: |
+ return os << "AVCOL_SPC_SMPTE240M" << std::endl; |
+ case AVCOL_SPC_YCOCG: |
+ return os << "AVCOL_SPC_YCOCG" << std::endl; |
+ case AVCOL_SPC_BT2020_NCL: |
+ return os << "AVCOL_SPC_BT2020_NCL" << std::endl; |
+ case AVCOL_SPC_BT2020_CL: |
+ return os << "AVCOL_SPC_BT2020_CL" << std::endl; |
+ case AVCOL_SPC_NB: |
+ return os << "AVCOL_SPC_NB" << std::endl; |
+ default: |
+ return os << "<UNKNOWN AVColorSpace: " << static_cast<int>(value) << ">" |
+ << std::endl; |
+ } |
+} |
+ |
+std::ostream& operator<<(std::ostream& os, enum AVDiscard value) { |
+ switch (value) { |
+ case AVDISCARD_NONE: |
+ return os << "AVDISCARD_NONE" << std::endl; |
+ case AVDISCARD_DEFAULT: |
+ return os << "AVDISCARD_DEFAULT" << std::endl; |
+ case AVDISCARD_NONREF: |
+ return os << "AVDISCARD_NONREF" << std::endl; |
+ case AVDISCARD_BIDIR: |
+ return os << "AVDISCARD_BIDIR" << std::endl; |
+ case AVDISCARD_NONINTRA: |
+ return os << "AVDISCARD_NONINTRA" << std::endl; |
+ case AVDISCARD_NONKEY: |
+ return os << "AVDISCARD_NONKEY" << std::endl; |
+ case AVDISCARD_ALL: |
+ return os << "AVDISCARD_ALL" << std::endl; |
+ default: |
+ return os << "<UNKNOWN AVDISCARD_: " << static_cast<int>(value) << ">" |
+ << std::endl; |
+ } |
+} |
+ |
+std::ostream& operator<<(std::ostream& os, AVDurationEstimationMethod value) { |
+ switch (value) { |
+ case AVFMT_DURATION_FROM_PTS: |
+ return os << "AVFMT_DURATION_FROM_PTS" << std::endl; |
+ case AVFMT_DURATION_FROM_STREAM: |
+ return os << "AVFMT_DURATION_FROM_STREAM" << std::endl; |
+ case AVFMT_DURATION_FROM_BITRATE: |
+ return os << "AVFMT_DURATION_FROM_BITRATE" << std::endl; |
+ default: |
+ return os << "<UNKNOWN AVDurationEstimationMethod: " |
+ << static_cast<int>(value) << ">" << std::endl; |
+ } |
+} |
+ |
+std::ostream& operator<<(std::ostream& os, const AVFormatContext *value) { |
+ if (value == nullptr) { |
+ return os << "<nullptr>" << std::endl; |
+ } else { |
+ os << std::endl; |
+ } |
+ |
+ os << indent; |
+ os << begl << "AVInputFormat *iformat: " << value->iformat; |
+ os << begl << "AVOutputFormat *oformat: " << value->oformat; |
+ os << begl << "AVIOContext *pb: " << value->pb; |
+ os << begl << "int ctx_flags: " << AVFMTCTXFlags(value->ctx_flags); |
+ os << begl << "unsigned int nb_streams: " << value->nb_streams << std::endl; |
+ os << begl << "AVStream **streams: " |
+ << AVStreamArray(value->streams, value->nb_streams); |
+ os << begl << "char filename[1024]: " << value->filename << std::endl; |
+ os << begl << "int64_t start_time: " << value->start_time << std::endl; |
+ os << begl << "int64_t duration: " << value->duration << std::endl; |
+ os << begl << "int64_t bit_rate: " << value->bit_rate << std::endl; |
+ os << begl << "unsigned int packet_size: " << value->packet_size << std::endl; |
+ os << begl << "int max_delay: " << value->max_delay << std::endl; |
+ os << begl << "int flags: " << AVFMTFlags(value->flags); |
+ os << begl << "int64_t probesize: " << value->probesize << std::endl; |
+ os << begl << "unsigned int nb_programs: " << value->nb_programs << std::endl; |
+ os << begl << "AVProgram **programs: " |
+ << AVProgramArray(value->programs, value->nb_programs); |
+ os << begl << "AVCodecID video_codec_id: " << value->video_codec_id; |
+ os << begl << "AVCodecID audio_codec_id: " << value->audio_codec_id; |
+ os << begl << "AVCodecID subtitle_codec_id: " << value->subtitle_codec_id; |
+ os << begl << "unsigned int max_index_size: " |
+ << value->max_index_size << std::endl; |
+ os << begl << "unsigned int max_picture_buffer: " |
+ << value->max_picture_buffer << std::endl; |
+ os << begl << "unsigned int nb_chapters: " << value->nb_chapters << std::endl; |
+ os << begl << "AVChapter **chapters: " |
+ << AVChapterArray(value->chapters, value->nb_chapters); |
+ os << begl << "AVDictionary *metadata: " << value->metadata; |
+ os << begl << "int64_t start_time_realtime: " << value->start_time_realtime |
+ << std::endl; |
+ os << begl << "int fps_probe_size: " << value->fps_probe_size << std::endl; |
+ os << begl << "int error_recognition: " |
+ << value->error_recognition << std::endl; |
+ os << begl << "int64_t max_interleave_delta: " |
+ << value->max_interleave_delta << std::endl; |
+ os << begl << "int strict_std_compliance: " |
+ << value->strict_std_compliance << std::endl; |
+ os << begl << "int event_flags: " << AVFMT_EVENTFlags(value->flags); |
+ os << begl << "int max_ts_probe: " << value->max_ts_probe << std::endl; |
+ os << begl << "int avoid_negative_ts: " |
+ << AVFMT_AVOID_NEG_TSFlags(value->avoid_negative_ts); |
+ os << begl << "int ts_id: " << value->ts_id << std::endl; |
+ os << begl << "int audio_preload: " << value->audio_preload << std::endl; |
+ os << begl << "int max_chunk_duration: " |
+ << value->max_chunk_duration << std::endl; |
+ os << begl << "int max_chunk_size: " << value->max_chunk_size << std::endl; |
+ os << begl << "int use_wallclock_as_timestamps: " |
+ << value->use_wallclock_as_timestamps << std::endl; |
+ os << begl << "int avio_flags: " << value->avio_flags << std::endl; |
+ os << begl << "AVDurationEstimationMethod duration_estimation_method: " |
+ << value->duration_estimation_method; |
+ os << begl << "int64_t skip_initial_bytes: " << value->skip_initial_bytes |
+ << std::endl; |
+ os << begl << "TODO(dalesat): more" << std::endl; |
+ return os << outdent; |
+} |
+ |
+} // namespace media |
+} // namespace mojo |