summaryrefslogtreecommitdiffstats
path: root/media/tools
diff options
context:
space:
mode:
authorjiesun@google.com <jiesun@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2010-10-13 20:13:33 +0000
committerjiesun@google.com <jiesun@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2010-10-13 20:13:33 +0000
commitf57c6416bb8ef6adc12b081b44ba5a83eae3c5ba (patch)
tree1ea83a39abaed84d6708e17821681c7f49931e0a /media/tools
parent68f1df43323a3a81cd14ed0061e7c3578394d8fd (diff)
downloadchromium_src-f57c6416bb8ef6adc12b081b44ba5a83eae3c5ba.zip
chromium_src-f57c6416bb8ef6adc12b081b44ba5a83eae3c5ba.tar.gz
chromium_src-f57c6416bb8ef6adc12b081b44ba5a83eae3c5ba.tar.bz2
[media] inject VDC to decoder.
which VDC to be used should be determined by something outside instead of inside video decoder. 1. whether hardware composition is used( probably always true). 2. whether hardware composition is disabled.(if not, why we keep the skbitmap path). 3. whether a opengl or a opengles VDC is needed, probably only apply to player_x11. 4. the video decoder context are sharing a lot of states with "painter/compositor" (e.g. graphic context). and if we create VDC inside decoder, and there is no current code path to inject this to Renderer, there are also complication of the factories and creating orders. even we add that path, it maybe too late for renderer. while we need to refactor ipc_video_decoder later. BUG=None TEST=Bots Review URL: http://codereview.chromium.org/3534015 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@62443 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'media/tools')
-rw-r--r--media/tools/player_wtl/movie.cc2
-rw-r--r--media/tools/player_x11/player_x11.cc13
2 files changed, 12 insertions, 3 deletions
diff --git a/media/tools/player_wtl/movie.cc b/media/tools/player_wtl/movie.cc
index 7070138..be97097 100644
--- a/media/tools/player_wtl/movie.cc
+++ b/media/tools/player_wtl/movie.cc
@@ -59,7 +59,7 @@ bool Movie::Open(const wchar_t* url, WtlVideoRenderer* video_renderer) {
factories->AddFactory(FileDataSource::CreateFactory());
factories->AddFactory(FFmpegAudioDecoder::CreateFactory());
factories->AddFactory(FFmpegDemuxer::CreateFilterFactory());
- factories->AddFactory(FFmpegVideoDecoder::CreateFactory());
+ factories->AddFactory(FFmpegVideoDecoder::CreateFactory(NULL));
if (enable_audio_) {
factories->AddFactory(AudioRendererImpl::CreateFilterFactory());
diff --git a/media/tools/player_x11/player_x11.cc b/media/tools/player_x11/player_x11.cc
index a361368..11b8b5f 100644
--- a/media/tools/player_x11/player_x11.cc
+++ b/media/tools/player_x11/player_x11.cc
@@ -24,6 +24,14 @@
#include "media/filters/null_audio_renderer.h"
#include "media/filters/omx_video_decoder.h"
+// TODO(jiesun): implement different video decode contexts according to
+// these flags. e.g.
+// 1. system memory video decode context for x11
+// 2. gl texture video decode context for OpenGL.
+// 3. gles texture video decode context for OpenGLES.
+// TODO(jiesun): add an uniform video renderer which take the video
+// decode context object and delegate renderer request to these
+// objects. i.e. Seperate "painter" and "pts scheduler".
#if defined(RENDERER_GL)
#include "media/tools/player_x11/gl_video_renderer.h"
typedef GlVideoRenderer Renderer;
@@ -96,9 +104,10 @@ bool InitPipeline(MessageLoop* message_loop,
factories->AddFactory(media::FFmpegDemuxer::CreateFilterFactory());
if (CommandLine::ForCurrentProcess()->HasSwitch(
switches::kEnableOpenMax)) {
- factories->AddFactory(media::OmxVideoDecoder::CreateFactory());
+ factories->AddFactory(media::OmxVideoDecoder::CreateFactory(NULL));
+ } else {
+ factories->AddFactory(media::FFmpegVideoDecoder::CreateFactory(NULL));
}
- factories->AddFactory(media::FFmpegVideoDecoder::CreateFactory());
factories->AddFactory(Renderer::CreateFactory(g_display, g_window,
paint_message_loop));