[Haiku-commits] r27568 - haiku/trunk/src/add-ons/media/plugins/avcodec
dlmcpaul at BerliOS
dlmcpaul at mail.berlios.de
Mon Sep 15 16:15:09 CEST 2008
Author: dlmcpaul
Date: 2008-09-15 16:15:08 +0200 (Mon, 15 Sep 2008)
New Revision: 27568
ViewCVS: http://svn.berlios.de/viewcvs/haiku?rev=27568&view=rev
Modified:
haiku/trunk/src/add-ons/media/plugins/avcodec/Jamfile
haiku/trunk/src/add-ons/media/plugins/avcodec/avcodec.cpp
haiku/trunk/src/add-ons/media/plugins/avcodec/codectbl.cpp
haiku/trunk/src/add-ons/media/plugins/avcodec/gfx_util.h
Log:
Update avcodec to 20080825
Modified: haiku/trunk/src/add-ons/media/plugins/avcodec/Jamfile
===================================================================
--- haiku/trunk/src/add-ons/media/plugins/avcodec/Jamfile 2008-09-15 14:14:35 UTC (rev 27567)
+++ haiku/trunk/src/add-ons/media/plugins/avcodec/Jamfile 2008-09-15 14:15:08 UTC (rev 27568)
@@ -5,6 +5,8 @@
UsePrivateHeaders media ;
SubDirHdrs [ FDirName $(SUBDIR) libavcodec ] ;
+SubDirHdrs [ FDirName $(SUBDIR) libavutil ] ;
+SubDirHdrs [ FDirName $(SUBDIR) libswscale ] ;
Addon avcodec :
avcodec.cpp
@@ -15,8 +17,12 @@
gfx_util.cpp
:
libavcodec.a
+ libavutil.a
+ libswscale.a
be
libmedia.so
;
SubInclude HAIKU_TOP src add-ons media plugins avcodec libavcodec ;
+SubInclude HAIKU_TOP src add-ons media plugins avcodec libavutil ;
+SubInclude HAIKU_TOP src add-ons media plugins avcodec libswscale ;
Modified: haiku/trunk/src/add-ons/media/plugins/avcodec/avcodec.cpp
===================================================================
--- haiku/trunk/src/add-ons/media/plugins/avcodec/avcodec.cpp 2008-09-15 14:14:35 UTC (rev 27567)
+++ haiku/trunk/src/add-ons/media/plugins/avcodec/avcodec.cpp 2008-09-15 14:15:08 UTC (rev 27568)
@@ -13,18 +13,17 @@
#include <OS.h>
#include <Bitmap.h>
#include <string.h>
+
#include "avcodec.h"
-
#undef TRACE
-//#define TRACE_AV_CODEC
+#define TRACE_AV_CODEC
#ifdef TRACE_AV_CODEC
# define TRACE(x...) printf(x)
#else
# define TRACE(x...)
#endif
-
struct wave_format_ex {
uint16 format_tag;
uint16 channels;
@@ -57,7 +56,7 @@
fBlockAlign(0),
fOutputBuffer(0)
{
- TRACE("[%c] avCodec::avCodec()\n", isAudio?('a'):('v'));
+ TRACE("avCodec::avCodec()\n");
// prevent multiple inits
static volatile vint32 ff_init_count = 0;
@@ -113,6 +112,7 @@
return B_ERROR;
isAudio = (ioEncodedFormat->type == B_MEDIA_ENCODED_AUDIO);
+ TRACE("[%c] avCodec::Setup()\n", isAudio?('a'):('v'));
if (isAudio && !fOutputBuffer)
fOutputBuffer = new char[100000];
@@ -185,6 +185,13 @@
memcpy(fExtraData, wfmt_data + 1, fExtraDataSize);
}
}
+ } else {
+ TRACE("avCodec: extra data size %ld\n",infoSize);
+ fExtraDataSize = infoSize;
+ if (fExtraDataSize) {
+ fExtraData = new char [fExtraDataSize];
+ memcpy(fExtraData, infoBuffer, fExtraDataSize);
+ }
}
fInputFormat = *ioEncodedFormat;
@@ -216,8 +223,10 @@
status_t
avCodec::NegotiateOutputFormat(media_format *inout_format)
{
- TRACE("[%c] avCodec::Format()\n", isAudio?('a'):('v'));
+ TRACE("[%c] avCodec::NegotiateOutputFormat()\n", isAudio?('a'):('v'));
+ int result;
+
#if DEBUG
char buffer[1024];
string_for_format(*inout_format, buffer, sizeof(buffer));
@@ -242,7 +251,7 @@
ffc->sample_rate = (int) fInputFormat.u.encoded_audio.output.frame_rate;
ffc->channels = fInputFormat.u.encoded_audio.output.channel_count;
ffc->block_align = fBlockAlign;
- ffc->extradata = fExtraData;
+ ffc->extradata = (uint8_t *)fExtraData;
ffc->extradata_size = fExtraDataSize;
TRACE("bit_rate %d, sample_rate %d, channels %d, block_align %d, "
@@ -256,11 +265,11 @@
}
// open new
- if (avcodec_open(ffc, fCodec) >= 0)
- fCodecInitDone = true;
+ result = avcodec_open(ffc, fCodec);
+ fCodecInitDone = (result >= 0);
- TRACE("audio: bit_rate = %d, sample_rate = %d, chans = %d\n",
- ffc->bit_rate, ffc->sample_rate, ffc->channels);
+ TRACE("audio: bit_rate = %d, sample_rate = %d, chans = %d Init = %d\n",
+ ffc->bit_rate, ffc->sample_rate, ffc->channels, result);
fStartTime = 0;
fOutputFrameSize = 2 * outputAudioFormat.channel_count;
@@ -275,19 +284,24 @@
inout_format->require_flags = 0;
inout_format->deny_flags = B_MEDIA_MAUI_UNDEFINED_FLAGS;
- return fCodecInitDone ? B_OK : B_ERROR;
+ if (!fCodecInitDone) {
+ TRACE("avcodec_open() failed!\n");
+ return B_ERROR;
+ }
+ return B_OK;
+
} else { // VIDEO
fOutputVideoFormat = fInputFormat.u.encoded_video.output;
ffc->width = fOutputVideoFormat.display.line_width;
ffc->height = fOutputVideoFormat.display.line_count;
- ffc->frame_rate = (int)(fOutputVideoFormat.field_rate
- * ffc->frame_rate_base);
+// ffc->frame_rate = (int)(fOutputVideoFormat.field_rate
+// * ffc->frame_rate_base);
if (fInputFormat.MetaDataSize() > 0) {
- ffc->extradata = (void *)fInputFormat.MetaData();
+ ffc->extradata = (uint8_t *)fInputFormat.MetaData();
ffc->extradata_size = fInputFormat.MetaDataSize();
}
Modified: haiku/trunk/src/add-ons/media/plugins/avcodec/codectbl.cpp
===================================================================
--- haiku/trunk/src/add-ons/media/plugins/avcodec/codectbl.cpp 2008-09-15 14:14:35 UTC (rev 27567)
+++ haiku/trunk/src/add-ons/media/plugins/avcodec/codectbl.cpp 2008-09-15 14:15:08 UTC (rev 27568)
@@ -53,6 +53,8 @@
{CODEC_ID_MPEG4, B_MEDIA_ENCODED_VIDEO, B_QUICKTIME_FORMAT_FAMILY, 'mp4v', "MPEG4 Video"},
{CODEC_ID_MPEG4AAC, B_MEDIA_ENCODED_AUDIO, B_QUICKTIME_FORMAT_FAMILY, 'a4pm', "MPEG4 AAC"},
{CODEC_ID_MPEG4, B_MEDIA_ENCODED_VIDEO, B_QUICKTIME_FORMAT_FAMILY, 'v4pm', "MPEG4 Video"},
+ {CODEC_ID_MPEG4AAC, B_MEDIA_ENCODED_AUDIO, B_MISC_FORMAT_FAMILY, 'mp4a', "MPEG4 AAC"}, /* For matroska */
+ {CODEC_ID_MPEG4AAC, B_MEDIA_ENCODED_AUDIO, B_MISC_FORMAT_FAMILY, 'a4pm', "MPEG4 AAC"}, /* For matroska */
#ifdef HAS_MACE_AUDIO
{CODEC_ID_MACE3, B_MEDIA_ENCODED_AUDIO, B_QUICKTIME_FORMAT_FAMILY, 'MAC3', "MACE 3:1"},
Modified: haiku/trunk/src/add-ons/media/plugins/avcodec/gfx_util.h
===================================================================
--- haiku/trunk/src/add-ons/media/plugins/avcodec/gfx_util.h 2008-09-15 14:14:35 UTC (rev 27567)
+++ haiku/trunk/src/add-ons/media/plugins/avcodec/gfx_util.h 2008-09-15 14:15:08 UTC (rev 27568)
@@ -1,6 +1,6 @@
/******************************************************************************
/
-/ File: ffutils.h
+/ File: gfx_util.h
/
/ Description: utility functions for ffmpeg codec wrappers for BeOs R5.
/
@@ -18,7 +18,9 @@
// BeOS and libavcodec bitmap formats
#include <GraphicsDefs.h>
-#include "libavcodec/avcodec.h"
+extern "C" {
+ #include "libavcodec/avcodec.h"
+}
// this function will be used by the wrapper to write into
// the Media Kit provided buffer from the self-allocated ffmpeg codec buffer
More information about the Haiku-commits
mailing list