Hi,
the attached patch should fix this bug.
Note that the package now depends on libavresample.
--
Anton Khirnov
Index: transcode-1.1.7/export/aud_aux.c
===================================================================
--- transcode-1.1.7.orig/export/aud_aux.c 2014-02-28 21:36:36.000000000 +0000
+++ transcode-1.1.7/export/aud_aux.c 2014-02-28 21:46:03.418899933 +0000
@@ -326,10 +326,10 @@
switch (o_codec) {
case 0x50:
- codeid = CODEC_ID_MP2;
+ codeid = AV_CODEC_ID_MP2;
break;
case 0x2000:
- codeid = CODEC_ID_AC3;
+ codeid = AV_CODEC_ID_AC3;
break;
default:
tc_warn("cannot init ffmpeg with %x", o_codec);
@@ -363,7 +363,7 @@
TC_UNLOCK_LIBAVCODEC;
if (ret < 0) {
tc_warn("tc_audio_init_ffmpeg: could not open %s codec !",
- (codeid == CODEC_ID_MP2) ?"mpa" :"ac3");
+ (codeid == AV_CODEC_ID_MP2) ?"mpa" :"ac3");
return(TC_EXPORT_ERROR);
}
Index: transcode-1.1.7/filter/filter_resample.c
===================================================================
--- transcode-1.1.7.orig/filter/filter_resample.c 2011-11-19 16:50:27.000000000 +0000
+++ transcode-1.1.7/filter/filter_resample.c 2014-03-01 15:17:43.612773553 +0000
@@ -38,6 +38,8 @@
#include "libtc/tcavcodec.h"
#include "libtc/tcmodule-plugin.h"
+#include <libavresample/avresample.h>
+
typedef struct {
uint8_t *resample_buf;
@@ -45,7 +47,7 @@
int bytes_per_sample;
- ReSampleContext *resample_ctx;
+ AVAudioResampleContext *avr;
} ResamplePrivateData;
static const char resample_help[] = ""
@@ -65,6 +67,7 @@
{
double samples_per_frame, ratio;
ResamplePrivateData *pd = NULL;
+ int ret;
TC_MODULE_SELF_CHECK(self, "configure");
TC_MODULE_SELF_CHECK(vob, "configure"); /* paranoia */
@@ -110,12 +113,20 @@
goto abort;
}
- pd->resample_ctx = av_audio_resample_init(vob->a_chan, vob->a_chan,
- vob->mp3frequency, vob->a_rate,
- AV_SAMPLE_FMT_S16, AV_SAMPLE_FMT_S16,
- 16, 10, 0, 0.8);
- if (pd->resample_ctx == NULL) {
- tc_log_error(MOD_NAME, "can't get a resample context");
+ pd->avr = avresample_alloc_context();
+ if (!pd->avr)
+ goto abort;
+
+ av_opt_set_int(pd->avr, "in_sample_fmt", AV_SAMPLE_FMT_S16, 0);
+ av_opt_set_int(pd->avr, "out_sample_fmt", AV_SAMPLE_FMT_S16, 0);
+ av_opt_set_int(pd->avr, "in_channel_layout", av_get_default_channel_layout(vob->a_chan), 0);
+ av_opt_set_int(pd->avr, "out_channel_layout", av_get_default_channel_layout(vob->a_chan), 0);
+ av_opt_set_int(pd->avr, "in_sample_rate", vob->mp3frequency, 0);
+ av_opt_set_int(pd->avr, "out_sample_rate", vob->a_rate, 0);
+
+ ret = avresample_open(pd->avr);
+ if (ret < 0) {
+ tc_log_error(MOD_NAME, "can't open a resample context");
goto abort;
}
@@ -148,10 +159,8 @@
pd = self->userdata;
- if (pd->resample_ctx != NULL) {
- audio_resample_close(pd->resample_ctx);
- pd->resample_ctx = NULL;
- }
+ avresample_free(&pd->avr);
+
if (pd->resample_buf != NULL) {
tc_free(pd->resample_buf);
pd->resample_buf = NULL;
@@ -186,10 +195,9 @@
if (verbose >= TC_STATS)
tc_log_info(MOD_NAME, "inbuf: %i, bufsize: %lu",
frame->audio_size, (unsigned long)pd->resample_bufsize);
- frame->audio_size = audio_resample(pd->resample_ctx,
- (int16_t*)pd->resample_buf,
- (int16_t*)frame->audio_buf,
- frame->audio_size/pd->bytes_per_sample);
+ frame->audio_size = avresample_convert(pd->avr, &pd->resample_buf, pd->resample_bufsize,
+ pd->resample_bufsize / pd->bytes_per_sample,
+ (uint8_t**)&frame->audio_buf, frame->audio_size, frame->audio_size / pd->bytes_per_sample);
frame->audio_size *= pd->bytes_per_sample;
if (verbose >= TC_STATS)
tc_log_info(MOD_NAME, "outbuf: %i", frame->audio_size);
Index: transcode-1.1.7/import/decode_lavc.c
===================================================================
--- transcode-1.1.7.orig/import/decode_lavc.c 2014-02-28 21:36:36.000000000 +0000
+++ transcode-1.1.7/import/decode_lavc.c 2014-03-01 15:23:18.856025243 +0000
@@ -58,37 +58,37 @@
// fourCC to ID mapping taken from MPlayer's codecs.conf
static struct ffmpeg_codec ffmpeg_codecs[] = {
- {CODEC_ID_MSMPEG4V1, TC_CODEC_ERROR, "mp41",
+ {AV_CODEC_ID_MSMPEG4V1, TC_CODEC_ERROR, "mp41",
{"MP41", "DIV1", ""}},
- {CODEC_ID_MSMPEG4V2, TC_CODEC_MP42, "mp42",
+ {AV_CODEC_ID_MSMPEG4V2, TC_CODEC_MP42, "mp42",
{"MP42", "DIV2", ""}},
- {CODEC_ID_MSMPEG4V3, TC_CODEC_DIVX3, "msmpeg4",
+ {AV_CODEC_ID_MSMPEG4V3, TC_CODEC_DIVX3, "msmpeg4",
{"DIV3", "DIV5", "AP41", "MPG3", "MP43", ""}},
- {CODEC_ID_MPEG4, TC_CODEC_DIVX4, "mpeg4",
+ {AV_CODEC_ID_MPEG4, TC_CODEC_DIVX4, "mpeg4",
{"DIVX", "XVID", "MP4S", "M4S2", "MP4V", "UMP4", "DX50", ""}},
- {CODEC_ID_MJPEG, TC_CODEC_MJPEG, "mjpeg",
+ {AV_CODEC_ID_MJPEG, TC_CODEC_MJPEG, "mjpeg",
{"MJPG", "AVRN", "AVDJ", "JPEG", "MJPA", "JFIF", ""}},
- {CODEC_ID_MPEG1VIDEO, TC_CODEC_MPEG1VIDEO, "mpeg1video",
+ {AV_CODEC_ID_MPEG1VIDEO, TC_CODEC_MPEG1VIDEO, "mpeg1video",
{"MPG1", ""}},
- {CODEC_ID_DVVIDEO, TC_CODEC_DV, "dvvideo",
+ {AV_CODEC_ID_DVVIDEO, TC_CODEC_DV, "dvvideo",
{"DVSD", ""}},
- {CODEC_ID_WMV1, TC_CODEC_WMV1, "wmv1",
+ {AV_CODEC_ID_WMV1, TC_CODEC_WMV1, "wmv1",
{"WMV1", ""}},
- {CODEC_ID_WMV2, TC_CODEC_WMV2, "wmv2",
+ {AV_CODEC_ID_WMV2, TC_CODEC_WMV2, "wmv2",
{"WMV2", ""}},
- {CODEC_ID_HUFFYUV, TC_CODEC_HUFFYUV, "hfyu",
+ {AV_CODEC_ID_HUFFYUV, TC_CODEC_HUFFYUV, "hfyu",
{"HFYU", ""}},
- {CODEC_ID_H263I, TC_CODEC_H263I, "h263i",
+ {AV_CODEC_ID_H263I, TC_CODEC_H263I, "h263i",
{"I263", ""}},
- {CODEC_ID_H263P, TC_CODEC_H263P, "h263p",
+ {AV_CODEC_ID_H263P, TC_CODEC_H263P, "h263p",
{"H263", "U263", "VIV1", ""}},
- {CODEC_ID_RV10, TC_CODEC_RV10, "rv10",
+ {AV_CODEC_ID_RV10, TC_CODEC_RV10, "rv10",
{"RV10", "RV13", ""}},
- {CODEC_ID_SVQ1, TC_CODEC_SVQ1, "svq1",
+ {AV_CODEC_ID_SVQ1, TC_CODEC_SVQ1, "svq1",
{"SVQ1", ""}},
- {CODEC_ID_SVQ3, TC_CODEC_SVQ3, "svq3",
+ {AV_CODEC_ID_SVQ3, TC_CODEC_SVQ3, "svq3",
{"SVQ3", ""}},
- {CODEC_ID_MPEG2VIDEO, TC_CODEC_MPEG2, "mpeg2video",
+ {AV_CODEC_ID_MPEG2VIDEO, TC_CODEC_MPEG2, "mpeg2video",
{"MPG2", ""}},
{0, TC_CODEC_UNKNOWN, NULL, {""}}};
Index: transcode-1.1.7/import/import_ffmpeg.c
===================================================================
--- transcode-1.1.7.orig/import/import_ffmpeg.c 2014-02-28 21:36:36.000000000 +0000
+++ transcode-1.1.7/import/import_ffmpeg.c 2014-03-01 15:22:14.847450571 +0000
@@ -59,51 +59,51 @@
// fourCC to ID mapping taken from MPlayer's codecs.conf
static struct ffmpeg_codec ffmpeg_codecs[] = {
- {CODEC_ID_MSMPEG4V1, TC_CODEC_ERROR, "mp41",
+ {AV_CODEC_ID_MSMPEG4V1, TC_CODEC_ERROR, "mp41",
{"MP41", "DIV1", ""}},
- {CODEC_ID_MSMPEG4V2, TC_CODEC_MP42, "mp42",
+ {AV_CODEC_ID_MSMPEG4V2, TC_CODEC_MP42, "mp42",
{"MP42", "DIV2", ""}},
- {CODEC_ID_MSMPEG4V3, TC_CODEC_DIVX3, "msmpeg4",
+ {AV_CODEC_ID_MSMPEG4V3, TC_CODEC_DIVX3, "msmpeg4",
{"DIV3", "DIV5", "AP41", "MPG3", "MP43", ""}},
- {CODEC_ID_MPEG4, TC_CODEC_DIVX4, "mpeg4",
+ {AV_CODEC_ID_MPEG4, TC_CODEC_DIVX4, "mpeg4",
{"DIVX", "XVID", "MP4S", "M4S2", "MP4V", "UMP4", "DX50", ""}},
- {CODEC_ID_MJPEG, TC_CODEC_MJPEG, "mjpeg",
+ {AV_CODEC_ID_MJPEG, TC_CODEC_MJPEG, "mjpeg",
{"MJPG", "AVRN", "AVDJ", "JPEG", "MJPA", "JFIF", ""}},
- {CODEC_ID_MPEG1VIDEO, TC_CODEC_MPG1, "mpeg1video",
+ {AV_CODEC_ID_MPEG1VIDEO, TC_CODEC_MPG1, "mpeg1video",
{"MPG1", ""}},
- {CODEC_ID_DVVIDEO, TC_CODEC_DV, "dvvideo",
+ {AV_CODEC_ID_DVVIDEO, TC_CODEC_DV, "dvvideo",
{"DVSD", ""}},
- {CODEC_ID_WMV1, TC_CODEC_WMV1, "wmv1",
+ {AV_CODEC_ID_WMV1, TC_CODEC_WMV1, "wmv1",
{"WMV1", ""}},
- {CODEC_ID_WMV2, TC_CODEC_WMV2, "wmv2",
+ {AV_CODEC_ID_WMV2, TC_CODEC_WMV2, "wmv2",
{"WMV2", ""}},
- {CODEC_ID_HUFFYUV, TC_CODEC_HUFFYUV, "hfyu",
+ {AV_CODEC_ID_HUFFYUV, TC_CODEC_HUFFYUV, "hfyu",
{"HFYU", ""}},
- {CODEC_ID_H263I, TC_CODEC_H263I, "h263i",
+ {AV_CODEC_ID_H263I, TC_CODEC_H263I, "h263i",
{"I263", ""}},
- {CODEC_ID_H263P, TC_CODEC_H263P, "h263p",
+ {AV_CODEC_ID_H263P, TC_CODEC_H263P, "h263p",
{"H263", "U263", "VIV1", ""}},
- {CODEC_ID_H264, TC_CODEC_H264, "h264",
+ {AV_CODEC_ID_H264, TC_CODEC_H264, "h264",
{"H264", "h264", "X264", "x264", "avc1", ""}},
- {CODEC_ID_RV10, TC_CODEC_RV10, "rv10",
+ {AV_CODEC_ID_RV10, TC_CODEC_RV10, "rv10",
{"RV10", "RV13", ""}},
- {CODEC_ID_SVQ1, TC_CODEC_SVQ1, "svq1",
+ {AV_CODEC_ID_SVQ1, TC_CODEC_SVQ1, "svq1",
{"SVQ1", ""}},
- {CODEC_ID_SVQ3, TC_CODEC_SVQ3, "svq3",
+ {AV_CODEC_ID_SVQ3, TC_CODEC_SVQ3, "svq3",
{"SVQ3", ""}},
- {CODEC_ID_MPEG2VIDEO, TC_CODEC_MPEG2, "mpeg2video",
+ {AV_CODEC_ID_MPEG2VIDEO, TC_CODEC_MPEG2, "mpeg2video",
{"MPG2", ""}},
- {CODEC_ID_MPEG2VIDEO, TC_CODEC_MPEG, "mpeg2video",
+ {AV_CODEC_ID_MPEG2VIDEO, TC_CODEC_MPEG, "mpeg2video",
{"MPG2", ""}},
- {CODEC_ID_ASV1, TC_CODEC_ASV1, "asv1",
+ {AV_CODEC_ID_ASV1, TC_CODEC_ASV1, "asv1",
{"ASV1", ""}},
- {CODEC_ID_ASV2, TC_CODEC_ASV2, "asv2",
+ {AV_CODEC_ID_ASV2, TC_CODEC_ASV2, "asv2",
{"ASV2", ""}},
- {CODEC_ID_FFV1, TC_CODEC_FFV1, "ffv1",
+ {AV_CODEC_ID_FFV1, TC_CODEC_FFV1, "ffv1",
{"FFV1", ""}},
- {CODEC_ID_RAWVIDEO, TC_CODEC_YUV420P, "raw",
+ {AV_CODEC_ID_RAWVIDEO, TC_CODEC_YUV420P, "raw",
{"I420", "IYUV", ""}},
- {CODEC_ID_RAWVIDEO, TC_CODEC_YUV422P, "raw",
+ {AV_CODEC_ID_RAWVIDEO, TC_CODEC_YUV422P, "raw",
{"Y42B", ""}},
{0, TC_CODEC_UNKNOWN, NULL, {""}}};
@@ -324,13 +324,13 @@
// XXX: some codecs need extra data
switch (codec->id)
{
- case CODEC_ID_MJPEG: extra_data_size = 28; break;
- case CODEC_ID_LJPEG: extra_data_size = 28; break;
- case CODEC_ID_HUFFYUV: extra_data_size = 1000; break;
- case CODEC_ID_ASV1: extra_data_size = 8; break;
- case CODEC_ID_ASV2: extra_data_size = 8; break;
- case CODEC_ID_WMV1: extra_data_size = 4; break;
- case CODEC_ID_WMV2: extra_data_size = 4; break;
+ case AV_CODEC_ID_MJPEG: extra_data_size = 28; break;
+ case AV_CODEC_ID_LJPEG: extra_data_size = 28; break;
+ case AV_CODEC_ID_HUFFYUV: extra_data_size = 1000; break;
+ case AV_CODEC_ID_ASV1: extra_data_size = 8; break;
+ case AV_CODEC_ID_ASV2: extra_data_size = 8; break;
+ case AV_CODEC_ID_WMV1: extra_data_size = 4; break;
+ case AV_CODEC_ID_WMV2: extra_data_size = 4; break;
default: extra_data_size = 0; break;
}
@@ -360,7 +360,7 @@
frame_size = x_dim*y_dim + 2*UV_PLANE_SIZE(IMG_YUV_DEFAULT,x_dim,y_dim);
// we adapt the color space
- if(codec->id == CODEC_ID_MJPEG) {
+ if(codec->id == AV_CODEC_ID_MJPEG) {
enable_levels_filter();
}
break;
@@ -434,7 +434,7 @@
}
// we adapt the color space
- if(codec->id == CODEC_ID_MJPEG) {
+ if(codec->id == AV_CODEC_ID_MJPEG) {
enable_levels_filter();
}
@@ -504,13 +504,13 @@
int bkey = 0;
// check for keyframes
- if (codec->id == CODEC_ID_MSMPEG4V3) {
+ if (codec->id == AV_CODEC_ID_MSMPEG4V3) {
if (divx3_is_key(buffer)) bkey = 1;
}
- else if (codec->id == CODEC_ID_MPEG4) {
+ else if (codec->id == AV_CODEC_ID_MPEG4) {
if (mpeg4_is_key(buffer, bytes_read)) bkey = 1;
}
- else if (codec->id == CODEC_ID_MJPEG) {
+ else if (codec->id == AV_CODEC_ID_MJPEG) {
bkey = 1;
}
Index: transcode-1.1.7/import/probe_ffmpeg.c
===================================================================
--- transcode-1.1.7.orig/import/probe_ffmpeg.c 2014-02-28 21:36:36.000000000 +0000
+++ transcode-1.1.7/import/probe_ffmpeg.c 2014-03-01 15:24:25.244658062 +0000
@@ -51,8 +51,8 @@
info->bitrate = st->codec->bit_rate / 1000;
info->width = st->codec->width;
info->height = st->codec->height;
- if (st->r_frame_rate.num > 0 && st->r_frame_rate.den > 0) {
- info->fps = av_q2d(st->r_frame_rate);
+ if (st->avg_frame_rate.num > 0 && st->avg_frame_rate.den > 0) {
+ info->fps = av_q2d(st->avg_frame_rate);
} else {
/* watch out here */
info->fps = 1.0/av_q2d(st->codec->time_base);
@@ -120,7 +120,7 @@
translate_info(lavf_dmx_context, ipipe->probe_info);
- av_close_input_file(lavf_dmx_context);
+ avformat_close_input(&lavf_dmx_context);
return;
}
_______________________________________________
pkg-multimedia-maintainers mailing list
pkg-multimedia-maintainers@lists.alioth.debian.org
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-multimedia-maintainers