+++ /dev/null
-diff --git a/libavformat/mov.c b/libavformat/mov.c
-index 4370b48..b28c9ae 100644
---- a/libavformat/mov.c
-+++ b/libavformat/mov.c
-@@ -2334,6 +2334,20 @@ static void mov_read_chapters(AVFormatContext *s)
- av_freep(&title);
- title = utf8;
- }
-+ else if (AV_RL16(title+2) == 0xfeff) {
-+ uint8_t *utf8 = av_malloc(2*len+3);
-+
-+ i8 = i16 = 0;
-+ while (i16 < len) {
-+ uint32_t ch;
-+ uint8_t tmp;
-+ GET_UTF16(ch, i16 < len ? AV_RL16(title + (i16+=2)) : 0, break;)
-+ PUT_UTF8(ch, tmp, if (i8 < 2*len) utf8[2+i8++] = tmp;)
-+ }
-+ utf8[2+i8] = 0;
-+ av_freep(&title);
-+ title = utf8;
-+ }
-
- ff_new_chapter(s, i, st->time_base, sample->timestamp, end, title+2);
- av_freep(&title);
$(eval $(call import.MODULE.defs,FFMPEG,ffmpeg,BZIP2 FAAD2 ZLIB))
$(eval $(call import.CONTRIB.defs,FFMPEG))
-FFMPEG.FETCH.url = http://download.m0k.org/handbrake/contrib/ffmpeg-r25689.tar.bz2
+FFMPEG.FETCH.url = http://download.m0k.org/handbrake/contrib/ffmpeg-git-185a155.tar.bz2
FFMPEG.CONFIGURE.deps =
FFMPEG.CONFIGURE.env =
unsigned long output_bytes;
hb_list_t * list;
uint8_t * buf;
- int16_t * samples;
+ float * samples;
};
int encac3Init( hb_work_object_t *, hb_job_t * );
pv->output_bytes = AC3_MAX_CODED_FRAME_SIZE;
pv->buf = malloc( pv->input_samples * sizeof( float ) );
- pv->samples = malloc( pv->input_samples * sizeof( int16_t ) );
+ pv->samples = malloc( pv->input_samples * sizeof( float ) );
codec = avcodec_find_encoder( CODEC_ID_AC3 );
if( !codec )
"failed" );
}
context = avcodec_alloc_context();
+ avcodec_get_context_defaults3(context, codec);
context->channel_layout = CH_LAYOUT_STEREO;
switch( audio->config.out.mixdown )
context->bit_rate = audio->config.out.bitrate * 1000;
context->sample_rate = audio->config.out.samplerate;
context->channels = pv->out_discrete_channels;
+ context->sample_fmt = AV_SAMPLE_FMT_FLT;
if( hb_avcodec_open( context, codec ) )
{
for (ii = 0; ii < pv->input_samples; ii++)
{
- pv->samples[ii] = (int16_t)((float*)pv->buf)[ii];
+ // ffmpeg float samples are -1.0 to 1.0
+ pv->samples[ii] = ((float*)pv->buf)[ii] / 32768.0;
}
buf = hb_buffer_init( pv->output_bytes );
buf->size = avcodec_encode_audio( pv->context, buf->data, buf->alloc,
- pv->samples );
+ (short*)pv->samples );
buf->start = pts + 90000 * pos / pv->out_discrete_channels / sizeof( float ) / audio->config.out.samplerate;
buf->stop = buf->start + 90000 * AC3_SAMPLES_PER_FRAME / audio->config.out.samplerate;
c->bit_rate = w->audio->config.in.bitrate;
c->sample_rate = w->audio->config.in.samplerate;
c->channels = HB_INPUT_CH_LAYOUT_GET_DISCRETE_COUNT( w->audio->config.in.channel_layout );
+ c->sample_fmt = AV_SAMPLE_FMT_FLT;
if( hb_avcodec_open( c, codec ) < 0 )
{
}
zeros = calloc( AC3_SAMPLES_PER_FRAME *
- sizeof( short ) * c->channels, 1 );
+ sizeof( float ) * c->channels, 1 );
sync->ac3_size = w->audio->config.in.bitrate * AC3_SAMPLES_PER_FRAME /
w->audio->config.in.samplerate / 8;
sync->ac3_buf = malloc( sync->ac3_size );