OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "media/ffmpeg/ffmpeg_common.h" | 5 #include "media/ffmpeg/ffmpeg_common.h" |
6 | 6 |
7 #include "base/basictypes.h" | 7 #include "base/basictypes.h" |
8 #include "base/logging.h" | 8 #include "base/logging.h" |
9 #include "media/base/decoder_buffer.h" | 9 #include "media/base/decoder_buffer.h" |
10 #include "media/base/video_frame.h" | 10 #include "media/base/video_frame.h" |
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
77 case CODEC_ID_FLAC: | 77 case CODEC_ID_FLAC: |
78 return kCodecFLAC; | 78 return kCodecFLAC; |
79 case CODEC_ID_AMR_NB: | 79 case CODEC_ID_AMR_NB: |
80 return kCodecAMR_NB; | 80 return kCodecAMR_NB; |
81 case CODEC_ID_AMR_WB: | 81 case CODEC_ID_AMR_WB: |
82 return kCodecAMR_WB; | 82 return kCodecAMR_WB; |
83 case CODEC_ID_GSM_MS: | 83 case CODEC_ID_GSM_MS: |
84 return kCodecGSM_MS; | 84 return kCodecGSM_MS; |
85 case CODEC_ID_PCM_MULAW: | 85 case CODEC_ID_PCM_MULAW: |
86 return kCodecPCM_MULAW; | 86 return kCodecPCM_MULAW; |
| 87 #ifndef CHROMIUM_OMIT_CODEC_ID_OPUS |
87 case CODEC_ID_OPUS: | 88 case CODEC_ID_OPUS: |
88 return kCodecOpus; | 89 return kCodecOpus; |
| 90 #endif |
89 default: | 91 default: |
90 DVLOG(1) << "Unknown audio CodecID: " << codec_id; | 92 DVLOG(1) << "Unknown audio CodecID: " << codec_id; |
91 } | 93 } |
92 return kUnknownAudioCodec; | 94 return kUnknownAudioCodec; |
93 } | 95 } |
94 | 96 |
95 static CodecID AudioCodecToCodecID(AudioCodec audio_codec, | 97 static CodecID AudioCodecToCodecID(AudioCodec audio_codec, |
96 SampleFormat sample_format) { | 98 SampleFormat sample_format) { |
97 switch (audio_codec) { | 99 switch (audio_codec) { |
98 case kCodecAAC: | 100 case kCodecAAC: |
(...skipping 23 matching lines...) Expand all Loading... |
122 case kCodecFLAC: | 124 case kCodecFLAC: |
123 return CODEC_ID_FLAC; | 125 return CODEC_ID_FLAC; |
124 case kCodecAMR_NB: | 126 case kCodecAMR_NB: |
125 return CODEC_ID_AMR_NB; | 127 return CODEC_ID_AMR_NB; |
126 case kCodecAMR_WB: | 128 case kCodecAMR_WB: |
127 return CODEC_ID_AMR_WB; | 129 return CODEC_ID_AMR_WB; |
128 case kCodecGSM_MS: | 130 case kCodecGSM_MS: |
129 return CODEC_ID_GSM_MS; | 131 return CODEC_ID_GSM_MS; |
130 case kCodecPCM_MULAW: | 132 case kCodecPCM_MULAW: |
131 return CODEC_ID_PCM_MULAW; | 133 return CODEC_ID_PCM_MULAW; |
| 134 #ifndef CHROMIUM_OMIT_CODEC_ID_OPUS |
132 case kCodecOpus: | 135 case kCodecOpus: |
133 return CODEC_ID_OPUS; | 136 return CODEC_ID_OPUS; |
| 137 #endif |
134 default: | 138 default: |
135 DVLOG(1) << "Unknown AudioCodec: " << audio_codec; | 139 DVLOG(1) << "Unknown AudioCodec: " << audio_codec; |
136 } | 140 } |
137 return CODEC_ID_NONE; | 141 return CODEC_ID_NONE; |
138 } | 142 } |
139 | 143 |
140 VideoCodec CodecIDToVideoCodec(CodecID codec_id) { | 144 VideoCodec CodecIDToVideoCodec(CodecID codec_id) { |
141 switch (codec_id) { | 145 switch (codec_id) { |
142 case CODEC_ID_H264: | 146 case CODEC_ID_H264: |
143 return kCodecH264; | 147 return kCodecH264; |
144 case CODEC_ID_THEORA: | 148 case CODEC_ID_THEORA: |
145 return kCodecTheora; | 149 return kCodecTheora; |
146 case CODEC_ID_MPEG4: | 150 case CODEC_ID_MPEG4: |
147 return kCodecMPEG4; | 151 return kCodecMPEG4; |
148 case CODEC_ID_VP8: | 152 case CODEC_ID_VP8: |
149 return kCodecVP8; | 153 return kCodecVP8; |
| 154 #ifndef CHROMIUM_OMIT_AV_CODEC_ID_VP9 |
150 case AV_CODEC_ID_VP9: | 155 case AV_CODEC_ID_VP9: |
151 return kCodecVP9; | 156 return kCodecVP9; |
| 157 #endif |
152 default: | 158 default: |
153 DVLOG(1) << "Unknown video CodecID: " << codec_id; | 159 DVLOG(1) << "Unknown video CodecID: " << codec_id; |
154 } | 160 } |
155 return kUnknownVideoCodec; | 161 return kUnknownVideoCodec; |
156 } | 162 } |
157 | 163 |
158 static CodecID VideoCodecToCodecID(VideoCodec video_codec) { | 164 static CodecID VideoCodecToCodecID(VideoCodec video_codec) { |
159 switch (video_codec) { | 165 switch (video_codec) { |
160 case kCodecH264: | 166 case kCodecH264: |
161 return CODEC_ID_H264; | 167 return CODEC_ID_H264; |
162 case kCodecTheora: | 168 case kCodecTheora: |
163 return CODEC_ID_THEORA; | 169 return CODEC_ID_THEORA; |
164 case kCodecMPEG4: | 170 case kCodecMPEG4: |
165 return CODEC_ID_MPEG4; | 171 return CODEC_ID_MPEG4; |
166 case kCodecVP8: | 172 case kCodecVP8: |
167 return CODEC_ID_VP8; | 173 return CODEC_ID_VP8; |
| 174 #ifndef CHROMIUM_OMIT_AV_CODEC_ID_VP9 |
168 case kCodecVP9: | 175 case kCodecVP9: |
169 return AV_CODEC_ID_VP9; | 176 return AV_CODEC_ID_VP9; |
| 177 #endif |
170 default: | 178 default: |
171 DVLOG(1) << "Unknown VideoCodec: " << video_codec; | 179 DVLOG(1) << "Unknown VideoCodec: " << video_codec; |
172 } | 180 } |
173 return CODEC_ID_NONE; | 181 return CODEC_ID_NONE; |
174 } | 182 } |
175 | 183 |
176 static VideoCodecProfile ProfileIDToVideoCodecProfile(int profile) { | 184 static VideoCodecProfile ProfileIDToVideoCodecProfile(int profile) { |
177 // Clear out the CONSTRAINED & INTRA flags which are strict subsets of the | 185 // Clear out the CONSTRAINED & INTRA flags which are strict subsets of the |
178 // corresponding profiles with which they're used. | 186 // corresponding profiles with which they're used. |
179 profile &= ~FF_PROFILE_H264_CONSTRAINED; | 187 profile &= ~FF_PROFILE_H264_CONSTRAINED; |
(...skipping 281 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
461 case AV_CH_LAYOUT_HEXAGONAL: | 469 case AV_CH_LAYOUT_HEXAGONAL: |
462 return CHANNEL_LAYOUT_HEXAGONAL; | 470 return CHANNEL_LAYOUT_HEXAGONAL; |
463 case AV_CH_LAYOUT_6POINT1: | 471 case AV_CH_LAYOUT_6POINT1: |
464 return CHANNEL_LAYOUT_6_1; | 472 return CHANNEL_LAYOUT_6_1; |
465 case AV_CH_LAYOUT_6POINT1_BACK: | 473 case AV_CH_LAYOUT_6POINT1_BACK: |
466 return CHANNEL_LAYOUT_6_1_BACK; | 474 return CHANNEL_LAYOUT_6_1_BACK; |
467 case AV_CH_LAYOUT_6POINT1_FRONT: | 475 case AV_CH_LAYOUT_6POINT1_FRONT: |
468 return CHANNEL_LAYOUT_6_1_FRONT; | 476 return CHANNEL_LAYOUT_6_1_FRONT; |
469 case AV_CH_LAYOUT_7POINT0_FRONT: | 477 case AV_CH_LAYOUT_7POINT0_FRONT: |
470 return CHANNEL_LAYOUT_7_0_FRONT; | 478 return CHANNEL_LAYOUT_7_0_FRONT; |
| 479 #ifdef AV_CH_LAYOUT_7POINT1_WIDE_BACK |
471 case AV_CH_LAYOUT_7POINT1_WIDE_BACK: | 480 case AV_CH_LAYOUT_7POINT1_WIDE_BACK: |
472 return CHANNEL_LAYOUT_7_1_WIDE_BACK; | 481 return CHANNEL_LAYOUT_7_1_WIDE_BACK; |
| 482 #endif |
473 case AV_CH_LAYOUT_OCTAGONAL: | 483 case AV_CH_LAYOUT_OCTAGONAL: |
474 return CHANNEL_LAYOUT_OCTAGONAL; | 484 return CHANNEL_LAYOUT_OCTAGONAL; |
475 default: | 485 default: |
476 // FFmpeg channel_layout is 0 for .wav and .mp3. Attempt to guess layout | 486 // FFmpeg channel_layout is 0 for .wav and .mp3. Attempt to guess layout |
477 // based on the channel count. | 487 // based on the channel count. |
478 return GuessChannelLayout(channels); | 488 return GuessChannelLayout(channels); |
479 } | 489 } |
480 } | 490 } |
481 | 491 |
482 VideoFrame::Format PixelFormatToVideoFormat(PixelFormat pixel_format) { | 492 VideoFrame::Format PixelFormatToVideoFormat(PixelFormat pixel_format) { |
(...skipping 18 matching lines...) Expand all Loading... |
501 return PIX_FMT_YUV422P; | 511 return PIX_FMT_YUV422P; |
502 case VideoFrame::YV12: | 512 case VideoFrame::YV12: |
503 return PIX_FMT_YUV420P; | 513 return PIX_FMT_YUV420P; |
504 default: | 514 default: |
505 DVLOG(1) << "Unsupported VideoFrame::Format: " << video_format; | 515 DVLOG(1) << "Unsupported VideoFrame::Format: " << video_format; |
506 } | 516 } |
507 return PIX_FMT_NONE; | 517 return PIX_FMT_NONE; |
508 } | 518 } |
509 | 519 |
510 } // namespace media | 520 } // namespace media |
OLD | NEW |