From c06c86a302db8c82698b8a3cc0f92ff5b22a412b Mon Sep 17 00:00:00 2001 From: "ajwong@chromium.org" Date: Fri, 1 May 2009 23:16:19 +0000 Subject: Enable video in posix builds and remove unneeded ifdefs to guard windows. The code still crashes when trying to play a video, but this will allow debugging. Review URL: http://codereview.chromium.org/100195 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@15117 0039d316-1c4b-4281-b951-d872f2087c98 --- media/base/media_posix.cc | 46 ++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 38 insertions(+), 8 deletions(-) (limited to 'media/base/media_posix.cc') diff --git a/media/base/media_posix.cc b/media/base/media_posix.cc index edbced0..1b3f323 100644 --- a/media/base/media_posix.cc +++ b/media/base/media_posix.cc @@ -22,11 +22,6 @@ // be promising, but I don't quite understand it yet. extern "C" { -int (*av_get_bits_per_sample_format_ptr)(enum SampleFormat sample_fmt); -int av_get_bits_per_sample_format(enum SampleFormat sample_fmt) { - return av_get_bits_per_sample_format(sample_fmt); -} - void (*avcodec_init_ptr)(void) = NULL; void avcodec_init(void) { avcodec_init_ptr(); @@ -75,6 +70,11 @@ int avcodec_decode_video(AVCodecContext* avctx, AVFrame* picture, } +int (*av_get_bits_per_sample_format_ptr)(enum SampleFormat sample_fmt); +int av_get_bits_per_sample_format(enum SampleFormat sample_fmt) { + return av_get_bits_per_sample_format_ptr(sample_fmt); +} + void (*av_register_all_ptr)(void); void av_register_all(void) { av_register_all_ptr(); @@ -99,12 +99,29 @@ int av_read_frame(AVFormatContext* s, AVPacket* pkt) { return av_read_frame_ptr(s, pkt); } +int (*av_seek_frame_ptr)(AVFormatContext* s, int stream_index, + int64_t timestamp, int flags) = NULL; +int av_seek_frame(AVFormatContext* s, int stream_index, + int64_t timestamp, int flags) { + return av_seek_frame_ptr(s, stream_index, timestamp, flags); +} + +int (*av_register_protocol_ptr)(URLProtocol* protocol) = NULL; +int av_register_protocol(URLProtocol* protocol) { + return av_register_protocol_ptr(protocol); +} + void* (*av_malloc_ptr)(unsigned int size) = NULL; void* av_malloc(unsigned int size) { return av_malloc_ptr(size); } +void (*av_free_ptr)(void* ptr) = NULL; +void av_free(void* ptr) { + return av_free_ptr(ptr); +} + } // extern "C" @@ -169,9 +186,6 @@ bool InitializeMediaLibrary(const FilePath& module_dir) { // TODO(ajwong): Extract this to somewhere saner, and hopefully // autogenerate the bindings from the .def files. Having all this // code here is incredibly ugly. - av_get_bits_per_sample_format_ptr = - reinterpret_cast( - dlsym(libs[FILE_LIBAVCODEC], "av_get_bits_per_sample_format")); avcodec_init_ptr = reinterpret_cast( dlsym(libs[FILE_LIBAVCODEC], "avcodec_init")); @@ -196,6 +210,9 @@ bool InitializeMediaLibrary(const FilePath& module_dir) { const uint8_t*, int)>( dlsym(libs[FILE_LIBAVCODEC], "avcodec_decode_video")); + av_get_bits_per_sample_format_ptr = + reinterpret_cast( + dlsym(libs[FILE_LIBAVCODEC], "av_get_bits_per_sample_format")); av_register_all_ptr = reinterpret_cast( dlsym(libs[FILE_LIBAVFORMAT], "av_register_all")); @@ -210,10 +227,19 @@ bool InitializeMediaLibrary(const FilePath& module_dir) { av_read_frame_ptr = reinterpret_cast( dlsym(libs[FILE_LIBAVFORMAT], "av_read_frame")); + av_seek_frame_ptr = + reinterpret_cast( + dlsym(libs[FILE_LIBAVFORMAT], "av_seek_frame")); + av_register_protocol_ptr = + reinterpret_cast( + dlsym(libs[FILE_LIBAVFORMAT], "av_register_protocol")); av_malloc_ptr = reinterpret_cast( dlsym(libs[FILE_LIBAVUTIL], "av_malloc")); + av_free_ptr = + reinterpret_cast( + dlsym(libs[FILE_LIBAVUTIL], "av_free")); // Check that all the symbols were loaded correctly before returning true. if (avcodec_init_ptr && @@ -224,11 +250,15 @@ bool InitializeMediaLibrary(const FilePath& module_dir) { avcodec_decode_audio2_ptr && avcodec_decode_video_ptr && + av_get_bits_per_sample_format_ptr && av_register_all_ptr && av_open_input_file_ptr && av_find_stream_info_ptr && av_read_frame_ptr && + av_seek_frame_ptr && + av_register_protocol_ptr && + av_free_ptr && av_malloc_ptr) { return true; } -- cgit v1.1