summaryrefslogtreecommitdiffstats
path: root/media
diff options
context:
space:
mode:
authorhclam@chromium.org <hclam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-09-28 22:19:48 +0000
committerhclam@chromium.org <hclam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-09-28 22:19:48 +0000
commitdf10bf173f91818f1f03d409ec8d60265b44675f (patch)
tree27dc201712833ce527da84b15e0e4df73bdd56ec /media
parentb045a7405237ec931bf137f2c555960fa64a9523 (diff)
downloadchromium_src-df10bf173f91818f1f03d409ec8d60265b44675f.zip
chromium_src-df10bf173f91818f1f03d409ec8d60265b44675f.tar.gz
chromium_src-df10bf173f91818f1f03d409ec8d60265b44675f.tar.bz2
Implement VP8 encoder for chromoting
Added EncoderVp8 with test for chromoting. TEST=remoting_unittests BUG=50235 Review URL: http://codereview.chromium.org/3005036 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@60854 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'media')
-rw-r--r--media/base/media.h8
-rw-r--r--media/base/media_posix.cc21
-rw-r--r--media/base/media_win.cc18
3 files changed, 46 insertions, 1 deletions
diff --git a/media/base/media.h b/media/base/media.h
index 3d1a83a..fd3269e 100644
--- a/media/base/media.h
+++ b/media/base/media.h
@@ -25,6 +25,14 @@ bool InitializeMediaLibrary(const FilePath& module_dir);
// Returns true if OpenMAX was successfully initialized and loaded.
bool InitializeOpenMaxLibrary(const FilePath& module_dir);
+// This is temporary to get the address of vpx_codec_vp8_cx_algo in FFmpeg.
+// This method should only be called after media library is loaded.
+
+// TODO(hclam): Remove this after we have a getter function for the same
+// purpose in libvpx.
+// See bug: http://code.google.com/p/webm/issues/detail?id=169
+void* GetVp8CxAlgoAddress();
+
} // namespace media
#endif // MEDIA_BASE_MEDIA_H_
diff --git a/media/base/media_posix.cc b/media/base/media_posix.cc
index eebae5e..d5137eb 100644
--- a/media/base/media_posix.cc
+++ b/media/base/media_posix.cc
@@ -10,6 +10,7 @@
#include "base/file_path.h"
#include "base/logging.h"
+#include "base/native_library.h"
#include "base/path_service.h"
#include "media/ffmpeg/ffmpeg_common.h"
#include "third_party/ffmpeg/ffmpeg_stubs.h"
@@ -69,6 +70,9 @@ std::string GetDSOName(tp_ffmpeg::StubModules stub_key) {
} // namespace
+// Address of vpx_codec_vp8_cx_algo.
+static void* vp8_cx_algo_address = NULL;
+
// Attempts to initialize the media library (loading DSOs, etc.).
// Returns true if everything was successfully initialized, false otherwise.
bool InitializeMediaLibrary(const FilePath& module_dir) {
@@ -85,7 +89,18 @@ bool InitializeMediaLibrary(const FilePath& module_dir) {
paths[module].push_back(path.value());
}
- return tp_ffmpeg::InitializeStubs(paths);
+ bool ret = tp_ffmpeg::InitializeStubs(paths);
+
+ // TODO(hclam): This is temporary to obtain address of
+ // vpx_codec_vp8_cx_algo. This should be removed once libvpx has a
+ // getter method for it.
+ base::NativeLibrary sumo_lib =
+ base::LoadNativeLibrary(module_dir.Append(sumo_name));
+ if (sumo_lib) {
+ vp8_cx_algo_address = base::GetFunctionPointerFromNativeLibrary(
+ sumo_lib, "vpx_codec_vp8_cx_algo");
+ }
+ return ret;
}
#if defined(OS_LINUX)
@@ -114,4 +129,8 @@ bool InitializeOpenMaxLibrary(const FilePath& module_dir) {
}
#endif
+void* GetVp8CxAlgoAddress() {
+ return vp8_cx_algo_address;
+}
+
} // namespace media
diff --git a/media/base/media_win.cc b/media/base/media_win.cc
index 6f9e0f8..f31ab5b 100644
--- a/media/base/media_win.cc
+++ b/media/base/media_win.cc
@@ -8,6 +8,7 @@
#include "base/file_path.h"
#include "base/logging.h"
+#include "base/native_library.h"
#include "base/path_service.h"
#include "base/scoped_ptr.h"
@@ -47,6 +48,9 @@ FilePath::CharType* GetDLLName(FFmpegDLLKeys dll_key) {
} // namespace
+// Address of vpx_codec_vp8_cx_algo.
+static void* vp8_cx_algo_address = NULL;
+
// Attempts to initialize the media library (loading DLLs, DSOs, etc.).
// Returns true if everything was successfully initialized, false otherwise.
bool InitializeMediaLibrary(const FilePath& base_path) {
@@ -78,6 +82,16 @@ bool InitializeMediaLibrary(const FilePath& base_path) {
#endif
}
+ // TODO(hclam): This is temporary to obtain address of
+ // vpx_codec_vp8_cx_algo. This should be removed once libvpx has a
+ // getter method for it.
+ base::NativeLibrary avcodec_lib =
+ base::LoadNativeLibrary(FilePath(GetDLLName(media::FILE_LIBAVCODEC)));
+ if (avcodec_lib) {
+ vp8_cx_algo_address = base::GetFunctionPointerFromNativeLibrary(
+ avcodec_lib, "vpx_codec_vp8_cx_algo");
+ }
+
// Check that we loaded all libraries successfully. We only need to check the
// last array element because the loop above will break without initializing
// it on any prior error.
@@ -97,4 +111,8 @@ bool InitializeOpenMaxLibrary(const FilePath& module_dir) {
return false;
}
+void* GetVp8CxAlgoAddress() {
+ return vp8_cx_algo_address;
+}
+
} // namespace media