Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(781)

Side by Side Diff: media/filters/ffmpeg_demuxer.cc

Issue 2093007: Chromium side changes for enabling VP8 and WebM support. (Closed)
Patch Set: Final fixes Created 10 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « DEPS ('k') | media/filters/ffmpeg_demuxer_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 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 "base/callback.h" 5 #include "base/callback.h"
6 #include "base/command_line.h" 6 #include "base/command_line.h"
7 #include "base/scoped_ptr.h" 7 #include "base/scoped_ptr.h"
8 #include "base/stl_util-inl.h" 8 #include "base/stl_util-inl.h"
9 #include "base/string_util.h" 9 #include "base/string_util.h"
10 #include "base/time.h" 10 #include "base/time.h"
(...skipping 386 matching lines...) Expand 10 before | Expand all | Expand 10 after
397 // Fully initialize AVFormatContext by parsing the stream a little. 397 // Fully initialize AVFormatContext by parsing the stream a little.
398 result = av_find_stream_info(format_context_); 398 result = av_find_stream_info(format_context_);
399 if (result < 0) { 399 if (result < 0) {
400 host()->SetError(DEMUXER_ERROR_COULD_NOT_PARSE); 400 host()->SetError(DEMUXER_ERROR_COULD_NOT_PARSE);
401 callback->Run(); 401 callback->Run();
402 return; 402 return;
403 } 403 }
404 404
405 // Create demuxer streams for all supported streams. 405 // Create demuxer streams for all supported streams.
406 base::TimeDelta max_duration; 406 base::TimeDelta max_duration;
407 const bool kDemuxerIsWebm = !strcmp("webm", format_context_->iformat->name);
407 for (size_t i = 0; i < format_context_->nb_streams; ++i) { 408 for (size_t i = 0; i < format_context_->nb_streams; ++i) {
408 AVCodecContext* codec_context = format_context_->streams[i]->codec; 409 AVCodecContext* codec_context = format_context_->streams[i]->codec;
409 CodecType codec_type = codec_context->codec_type; 410 CodecType codec_type = codec_context->codec_type;
410 if (codec_type == CODEC_TYPE_AUDIO || codec_type == CODEC_TYPE_VIDEO) { 411 if (codec_type == CODEC_TYPE_AUDIO || codec_type == CODEC_TYPE_VIDEO) {
411 AVStream* stream = format_context_->streams[i]; 412 AVStream* stream = format_context_->streams[i];
413 // WebM is currently strictly VP8 and Vorbis.
414 if (kDemuxerIsWebm && (stream->codec->codec_id != CODEC_ID_VP8 &&
415 stream->codec->codec_id != CODEC_ID_VORBIS)) {
416 packet_streams_.push_back(NULL);
417 continue;
418 }
419
412 FFmpegDemuxerStream* demuxer_stream 420 FFmpegDemuxerStream* demuxer_stream
413 = new FFmpegDemuxerStream(this, stream); 421 = new FFmpegDemuxerStream(this, stream);
414 422
415 // Initialize the bitstream if OpenMAX is enabled. 423 // Initialize the bitstream if OpenMAX is enabled.
416 // TODO(hclam): Should be enabled by the decoder. 424 // TODO(hclam): Should be enabled by the decoder.
417 if (CommandLine::ForCurrentProcess()->HasSwitch( 425 if (CommandLine::ForCurrentProcess()->HasSwitch(
418 switches::kEnableOpenMax)) { 426 switches::kEnableOpenMax)) {
419 // TODO(ajwong): Unittest this branch of the if statement. 427 // TODO(ajwong): Unittest this branch of the if statement.
420 // TODO(hclam): In addition to codec we should also check the container. 428 // TODO(hclam): In addition to codec we should also check the container.
421 const char* filter_name = NULL; 429 const char* filter_name = NULL;
(...skipping 183 matching lines...) Expand 10 before | Expand all | Expand 10 after
605 read_event_.Wait(); 613 read_event_.Wait();
606 return last_read_bytes_; 614 return last_read_bytes_;
607 } 615 }
608 616
609 void FFmpegDemuxer::SignalReadCompleted(size_t size) { 617 void FFmpegDemuxer::SignalReadCompleted(size_t size) {
610 last_read_bytes_ = size; 618 last_read_bytes_ = size;
611 read_event_.Signal(); 619 read_event_.Signal();
612 } 620 }
613 621
614 } // namespace media 622 } // namespace media
OLDNEW
« no previous file with comments | « DEPS ('k') | media/filters/ffmpeg_demuxer_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698