diff --git a/src/add-ons/media/plugins/avcodec/avcodec.cpp b/src/add-ons/media/plugins/avcodec/avcodec.cpp index ab9415c9ae..6acc15c8cd 100644 --- a/src/add-ons/media/plugins/avcodec/avcodec.cpp +++ b/src/add-ons/media/plugins/avcodec/avcodec.cpp @@ -117,16 +117,14 @@ avCodec::Setup(media_format *ioEncodedFormat, const void *infoBuffer, if (isAudio && !fOutputBuffer) fOutputBuffer = new char[100000]; -#if DEBUG +//#if DEBUG char buffer[1024]; - string_for_format(*ioEncodedFormat, buffer, sizeof(buffer); + string_for_format(*ioEncodedFormat, buffer, sizeof(buffer)); TRACE("[%c] input_format=%s\n", isAudio?('a'):('v'), buffer); TRACE("[%c] infoSize=%ld\n", isAudio?('a'):('v'), infoSize); - TRACE("[%c] user_data_type=%08lx\n", isAudio?('a'):('v'), - ioEncodedFormat->user_data_type); -// TRACE("[%c] meta_data_size=%ld\n", isAudio?('a'):('v'), -// ioEncodedFormat->meta_data_size); -#endif + TRACE("[%c] user_data_type=%08lx\n", isAudio?('a'):('v'), ioEncodedFormat->user_data_type); +// TRACE("[%c] meta_data_size=%ld\n", isAudio?('a'):('v'), ioEncodedFormat->meta_data_size); +//#endif media_format_description descr; for (int32 i = 0; gCodecTable[i].id; i++) { @@ -157,10 +155,10 @@ avCodec::Setup(media_format *ioEncodedFormat, const void *infoBuffer, | descr.u.misc.codec; break; default: - puts("ERR family"); + puts("ERR family"); return B_ERROR; } - TRACE(" codec id = \"%c%c%c%c\"\n", (char)((cid >> 24) & 0xff), + TRACE(" 0x%04lx codec id = \"%c%c%c%c\"\n", uint32(cid), (char)((cid >> 24) & 0xff), (char)((cid >> 16) & 0xff), (char)((cid >> 8) & 0xff), (char)(cid & 0xff)); @@ -393,7 +391,7 @@ avCodec::Decode(void *out_buffer, int64 *out_frameCount, set_thread_priority(find_thread(NULL), B_NORMAL_PRIORITY); #endif - TRACE("[%c] avCodec::Decode()\n", isAudio?('a'):('v')); +// TRACE("[%c] avCodec::Decode()\n", isAudio?('a'):('v')); if (isAudio) { @@ -432,7 +430,7 @@ avCodec::Decode(void *out_buffer, int64 *out_frameCount, status_t err; err = GetNextChunk(&fChunkBuffer, &fChunkBufferSize, &chunk_mh); if (err != B_OK || fChunkBufferSize < 0) { - TRACE("GetNextChunk error\n"); + TRACE("GetNextChunk error %ld\n",fChunkBufferSize); fChunkBufferSize = 0; break; } @@ -456,8 +454,7 @@ avCodec::Decode(void *out_buffer, int64 *out_frameCount, fChunkBufferOffset = 0; fChunkBufferSize = 0; // } else { -// TRACE("audio decode: len %d, out_size %d\n", len, -// out_size); +// TRACE("audio decode: len %d, out_size %d\n", len, out_size); } fChunkBufferOffset += len; fChunkBufferSize -= len; @@ -475,8 +472,7 @@ avCodec::Decode(void *out_buffer, int64 *out_frameCount, err = GetNextChunk(&data, &size, &chunk_mh); if (err != B_OK) { - TRACE("avCodec::Decode(): error 0x%08lx from GetNextChunk()\n", - err); + TRACE("avCodec::Decode(): error 0x%08lx from GetNextChunk()\n", err); return err; } @@ -527,8 +523,8 @@ avCodec::Decode(void *out_buffer, int64 *out_frameCount, #ifdef DO_PROFILING prof_t2 = system_time(); #endif - TRACE("ONE FRAME OUT !! len=%d size=%ld (%s)\n", len, size, - pixfmt_to_string(ffc->pix_fmt)); +// TRACE("ONE FRAME OUT !! len=%d size=%ld (%s)\n", len, size, +// pixfmt_to_string(ffc->pix_fmt)); /* opicture.data[0] = (uint8_t *)out_buffer; opicture.linesize[0] = fOutputVideoFormat.display.bytes_per_row; diff --git a/src/add-ons/media/plugins/avcodec/codectbl.cpp b/src/add-ons/media/plugins/avcodec/codectbl.cpp index 6e9fc678ac..8fa05ab5b2 100644 --- a/src/add-ons/media/plugins/avcodec/codectbl.cpp +++ b/src/add-ons/media/plugins/avcodec/codectbl.cpp @@ -49,6 +49,7 @@ const struct codec_table gCodecTable[] = { {CODEC_ID_MP2, B_MEDIA_ENCODED_AUDIO, B_QUICKTIME_FORMAT_FAMILY, 0x6D730050, "MP Layer2"}, {CODEC_ID_MP2, B_MEDIA_ENCODED_AUDIO, B_QUICKTIME_FORMAT_FAMILY, 0x6D730055, "MP Layer3"}, {CODEC_ID_ADPCM_IMA_QT, B_MEDIA_ENCODED_AUDIO, B_QUICKTIME_FORMAT_FAMILY, 'ima4', "Quicktime IMA4"}, + {CODEC_ID_ADPCM_IMA_QT, B_MEDIA_ENCODED_AUDIO, B_QUICKTIME_FORMAT_FAMILY, 'IMA4', "Quicktime IMA4"}, {CODEC_ID_MPEG4AAC, B_MEDIA_ENCODED_AUDIO, B_QUICKTIME_FORMAT_FAMILY, 'mp4a', "MPEG4 AAC"}, {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"}, @@ -62,8 +63,8 @@ const struct codec_table gCodecTable[] = { #endif #if 0 - {CODEC_ID_MP2, B_MEDIA_ENCODED_AUDIO, B_WAV_FORMAT_FAMILY, 0x50, "MPEG Audio Layer 2"}, /* mpeg audio layer 2 */ - {CODEC_ID_MP2, B_MEDIA_ENCODED_AUDIO, B_WAV_FORMAT_FAMILY, 0x55, "MPEG Audio Layer 3"}, /* mpeg audio layer 3 */ + {CODEC_ID_MP2, B_MEDIA_ENCODED_AUDIO, B_WAV_FORMAT_FAMILY, 0x0050, "MPEG Audio Layer 2"}, /* mpeg audio layer 2 */ + {CODEC_ID_MP2, B_MEDIA_ENCODED_AUDIO, B_WAV_FORMAT_FAMILY, 0x0055, "MPEG Audio Layer 3"}, /* mpeg audio layer 3 */ #endif {CODEC_ID_WMAV1, B_MEDIA_ENCODED_AUDIO, B_WAV_FORMAT_FAMILY, 0x160, "MS WMA v1"}, @@ -95,6 +96,7 @@ const struct codec_table gCodecTable[] = { {CODEC_ID_H264, B_MEDIA_ENCODED_VIDEO, B_AVI_FORMAT_FAMILY, 'h264', "H264"}, {CODEC_ID_H264, B_MEDIA_ENCODED_VIDEO, B_AVI_FORMAT_FAMILY, 'H264', "H264"}, + {CODEC_ID_H264, B_MEDIA_ENCODED_VIDEO, B_QUICKTIME_FORMAT_FAMILY, 'avc1', "AVC"}, /* MPEG-4 AVC */ #ifdef HAS_PHOTO_JPEG {CODEC_ID_MJPEG, B_MEDIA_ENCODED_VIDEO, B_QUICKTIME_FORMAT_FAMILY, 'JPEG', "Photo-JPEG"}, @@ -116,7 +118,7 @@ const struct codec_table gCodecTable[] = { {CODEC_ID_MPEG4, B_MEDIA_ENCODED_VIDEO, B_QUICKTIME_FORMAT_FAMILY, '4PMF', "ffmpeg MPEG4"}, {CODEC_ID_MPEG4, B_MEDIA_ENCODED_VIDEO, B_QUICKTIME_FORMAT_FAMILY, 'DIVX', "MPEG4"}, /* OpenDivX */ /* XXX: doesn't seem to work */ {CODEC_ID_MPEG4, B_MEDIA_ENCODED_VIDEO, B_QUICKTIME_FORMAT_FAMILY, 'divx', "MPEG4"}, /* OpenDivX */ - {CODEC_ID_MPEG4, B_MEDIA_ENCODED_VIDEO, B_QUICKTIME_FORMAT_FAMILY, 'mp4v', "MPEG4"}, /* OpenDivX */ + {CODEC_ID_MPEG4, B_MEDIA_ENCODED_VIDEO, B_QUICKTIME_FORMAT_FAMILY, 'mp4v', "MPEG4"}, /* MPEG-4 ASP */ {CODEC_ID_MPEG4, B_MEDIA_ENCODED_VIDEO, B_QUICKTIME_FORMAT_FAMILY, 'XVID', "XviD (MPEG4)"}, /* OpenDivX ??? XXX: test */ {CODEC_ID_MPEG4, B_MEDIA_ENCODED_VIDEO, B_AVI_FORMAT_FAMILY, 'FMP4', "ffmpeg MPEG4"}, {CODEC_ID_MPEG4, B_MEDIA_ENCODED_VIDEO, B_AVI_FORMAT_FAMILY, '4PMF', "ffmpeg MPEG4"}, diff --git a/src/add-ons/media/plugins/avcodec/gfx_util.cpp b/src/add-ons/media/plugins/avcodec/gfx_util.cpp index 011abc5d96..afcc3fa138 100644 --- a/src/add-ons/media/plugins/avcodec/gfx_util.cpp +++ b/src/add-ons/media/plugins/avcodec/gfx_util.cpp @@ -55,7 +55,7 @@ gfx_convert_func resolve_colorspace(color_space colorSpace, PixelFormat pixelFor } } - if (pixelFormat == PIX_FMT_YUV420P) { + if (pixelFormat == PIX_FMT_YUV420P || pixelFormat == PIX_FMT_YUVJ420P) { #if INCLUDE_MMX if (mmx) { TRACE("resolve_colorspace: gfx_conv_yuv420p_rgb32_mmx\n"); @@ -107,7 +107,7 @@ gfx_convert_func resolve_colorspace(color_space colorSpace, PixelFormat pixelFor } } - if (pixelFormat == PIX_FMT_YUV420P) { + if (pixelFormat == PIX_FMT_YUV420P || pixelFormat == PIX_FMT_YUVJ420P) { #if INCLUDE_MMX if (mmx) { TRACE("resolve_colorspace: gfx_conv_yuv420p_ycbcr422_mmx\n"); @@ -147,6 +147,10 @@ const char *pixfmt_to_string(int p) switch(p) { case PIX_FMT_YUV420P: return "PIX_FMT_YUV420P"; + case PIX_FMT_YUVJ420P: + return "PIX_FMT_YUVJ420P - YUV420P (Jpeg)"; + case PIX_FMT_YUVA420P: + return "PIX_FMT_YUVA420P - YUV420P (Alpha)"; case PIX_FMT_YUV422: return "PIX_FMT_YUV422"; case PIX_FMT_RGB24: diff --git a/src/add-ons/media/plugins/avcodec/libavcodec/Jamfile b/src/add-ons/media/plugins/avcodec/libavcodec/Jamfile index 192a26be23..d827a5e9d4 100644 --- a/src/add-ons/media/plugins/avcodec/libavcodec/Jamfile +++ b/src/add-ons/media/plugins/avcodec/libavcodec/Jamfile @@ -20,11 +20,11 @@ StaticLibrary libavcodec.a : aac_parser.c aactab.c aasc.c -# ac3.c -# ac3_parser.c -# ac3dec.c -# ac3dec_data.c -# ac3tab.c + ac3.c + ac3_parser.c + ac3dec.c + ac3dec_data.c + ac3tab.c acelp_filters.c acelp_math.c acelp_pitch_delay.c @@ -33,7 +33,7 @@ StaticLibrary libavcodec.a : adxdec.c alac.c allcodecs.c -# apedec.c + apedec.c asv1.c atrac3.c audioconvert.c @@ -140,9 +140,9 @@ StaticLibrary libavcodec.a : mjpega_dump_header_bsf.c mjpegbdec.c mjpegdec.c -# mlp.c -# mlp_parser.c -# mlpdec.c + mlp.c + mlp_parser.c + mlpdec.c # mmvideo.c motion_est.c motionpixels.c @@ -166,9 +166,9 @@ StaticLibrary libavcodec.a : msmpeg4.c msmpeg4data.c msrle.c -# msvideo1.c -# nellymoser.c -# nellymoserdec.c + msvideo1.c + nellymoser.c + nellymoserdec.c noise_bsf.c nuv.c opt.c @@ -177,8 +177,8 @@ StaticLibrary libavcodec.a : pcx.c png.c # pngdec.c -# pnm.c -# pnm_parser.c + pnm.c + pnm_parser.c # pnmenc.c pthread.c ptx.c @@ -197,67 +197,67 @@ StaticLibrary libavcodec.a : resample2.c rl2.c rle.c -# roqaudioenc.c -# roqvideo.c -# roqvideodec.c + roqaudioenc.c + roqvideo.c + roqvideodec.c # roqvideoenc.c rpza.c rtjpeg.c -# rv10.c + rv10.c # rv30.c # rv30dsp.c # rv34.c -# rv40.c + rv40.c s3tc.c sgidec.c shorten.c simple_idct.c -# smacker.c + smacker.c smc.c # snow.c sonic.c -# sp5xdec.c + sp5xdec.c # sunrast.c -# svq1.c -# svq1dec.c -# svq3.c + svq1.c + svq1dec.c +# svq3.c - Included by h264 # targa.c # tiertexseqv.c # tiff.c # tiffenc.c -# truemotion1.c -# truemotion2.c -# truespeech.c + truemotion1.c + truemotion2.c + truespeech.c # tscc.c # tta.c # txd.c ulti.c utils.c vb.c -# vc1.c -# vc1_parser.c -# vc1data.c -# vc1dsp.c -# vcr1.c -# vmdav.c + vc1.c + vc1_parser.c + vc1data.c + vc1dsp.c + vcr1.c + vmdav.c # vmnc.c vorbis.c vorbis_data.c vorbis_dec.c -# vp3.c -# vp3_parser.c -# vp3dsp.c -# vp5.c -# vp56.c -# vp56data.c -# vp6.c + vp3.c + vp3_parser.c + vp3dsp.c + vp5.c + vp56.c + vp56data.c + vp6.c # vqavideo.c wavpack.c -# wma.c -# wmadec.c + wma.c + wmadec.c wmv2.c -# wmv2dec.c -# wnv1.c + wmv2dec.c + wnv1.c # ws-snd1.c # xan.c xiph.c diff --git a/src/add-ons/media/plugins/avcodec/libavcodec/config.h b/src/add-ons/media/plugins/avcodec/libavcodec/config.h index a34c05962e..1c9fc5b700 100644 --- a/src/add-ons/media/plugins/avcodec/libavcodec/config.h +++ b/src/add-ons/media/plugins/avcodec/libavcodec/config.h @@ -10,6 +10,14 @@ #define CONFIG_MPEGAUDIO_HP 1 #define CONFIG_HAVE_DLOPEN 1 #define CONFIG_AUDIO_BEOS 1 +#define CONFIG_MP2_DECODER 1 +#define CONFIG_MP3_DECODER 1 +#define CONFIG_MP3ON4_DECODER 1 +#define CONFIG_MP3ADU_DECODER 1 +#define CONFIG_VC1_DECODER 1 +#define CONFIG_WMV2_DECODER 1 +#define CONFIG_WMV3_DECODER 1 +#define CONFIG_AC3_DECODER 1 /* #define CONFIG_NETWORK 1 */ /* #define CONFIG_ZLIB 1 */ #define HAVE_MALLOC_H 1 @@ -153,8 +161,8 @@ #define ENABLE_SP5X_DECODER 0 #define ENABLE_SUNRAST_DECODER 0 #define ENABLE_SVQ1_ENCODER 0 -#define ENABLE_SVQ1_DECODER 0 -#define ENABLE_SVQ3_DECODER 0 +#define ENABLE_SVQ1_DECODER 1 +#define ENABLE_SVQ3_DECODER 1 #define ENABLE_TARGA_ENCODER 0 #define ENABLE_TARGA_DECODER 0 #define ENABLE_THEORA_DECODER 0 @@ -179,11 +187,11 @@ #define ENABLE_VP6F_DECODER 0 #define ENABLE_VQA_DECODER 0 #define ENABLE_WMV1_ENCODER 0 -#define ENABLE_WMV1_DECODER 0 +#define ENABLE_WMV1_DECODER 1 #define ENABLE_WMV2_ENCODER 0 -#define ENABLE_WMV2_DECODER 0 -#define ENABLE_WMV3_DECODER 0 -#define ENABLE_WNV1_DECODER 0 +#define ENABLE_WMV2_DECODER 1 +#define ENABLE_WMV3_DECODER 1 +#define ENABLE_WNV1_DECODER 1 #define ENABLE_XAN_WC3_DECODER 0 #define ENABLE_XL_DECODER 0 #define ENABLE_XSUB_DECODER 0 @@ -193,7 +201,7 @@ #define ENABLE_ZMBV_DECODER 0 #define ENABLE_AAC_DECODER 1 #define ENABLE_AC3_ENCODER 0 -#define ENABLE_AC3_DECODER 0 +#define ENABLE_AC3_DECODER 1 #define ENABLE_ALAC_ENCODER 0 #define ENABLE_ALAC_DECODER 1 #define ENABLE_APE_DECODER 0 @@ -208,10 +216,10 @@ #define ENABLE_MACE6_DECODER 1 #define ENABLE_MLP_DECODER 0 #define ENABLE_MP2_ENCODER 0 -#define ENABLE_MP2_DECODER 0 -#define ENABLE_MP3_DECODER 0 -#define ENABLE_MP3ADU_DECODER 0 -#define ENABLE_MP3ON4_DECODER 0 +#define ENABLE_MP2_DECODER 1 +#define ENABLE_MP3_DECODER 1 +#define ENABLE_MP3ADU_DECODER 1 +#define ENABLE_MP3ON4_DECODER 1 #define ENABLE_MPC7_DECODER 1 #define ENABLE_MPC8_DECODER 1 #define ENABLE_NELLYMOSER_DECODER 0 @@ -353,7 +361,7 @@ #define ENABLE_DVDSUB_PARSER 0 #define ENABLE_H261_PARSER 0 #define ENABLE_H263_PARSER 0 -#define ENABLE_H264_PARSER 0 +#define ENABLE_H264_PARSER 1 #define ENABLE_MJPEG_PARSER 0 #define ENABLE_MLP_PARSER 0 #define ENABLE_MPEG4VIDEO_PARSER 0