diff options
Diffstat (limited to 'multimedia/fuppes/patches/patch-ad')
-rw-r--r-- | multimedia/fuppes/patches/patch-ad | 90 |
1 files changed, 90 insertions, 0 deletions
diff --git a/multimedia/fuppes/patches/patch-ad b/multimedia/fuppes/patches/patch-ad new file mode 100644 index 00000000000..f24c156a42f --- /dev/null +++ b/multimedia/fuppes/patches/patch-ad @@ -0,0 +1,90 @@ +$NetBSD: patch-ad,v 1.1 2009/11/28 18:37:22 kefren Exp $ +--- src/plugins/ffmpeg/ffmpeg.cpp.orig 2009-11-28 18:48:32.000000000 +0200 ++++ src/plugins/ffmpeg/ffmpeg.cpp 2009-11-28 19:04:32.000000000 +0200 +@@ -201,7 +201,7 @@ + + if(pFFmpeg->audio_sync_method){ + double delta = get_sync_ipts(ost, pFFmpeg) * enc->sample_rate - ost->sync_opts +- - av_fifo_size(&ost->fifo)/(ost->st->codec->channels * 2); ++ - av_fifo_size(ost->fifo)/(ost->st->codec->channels * 2); + double idelta= delta*ist->st->codec->sample_rate / enc->sample_rate; + int byte_delta= ((int)idelta)*2*ist->st->codec->channels; + +@@ -238,13 +238,13 @@ + assert(ost->audio_resample); + if(pFFmpeg->verbose > 2) + fprintf(stderr, "compensating audio timestamp drift:%f compensation:%d in:%d\n", delta, comp, enc->sample_rate); +-// fprintf(stderr, "drift:%f len:%d opts:%"PRId64" ipts:%"PRId64" fifo:%d\n", delta, -1, ost->sync_opts, (int64_t)(get_sync_ipts(ost) * enc->sample_rate), av_fifo_size(&ost->fifo)/(ost->st->codec->channels * 2)); ++// fprintf(stderr, "drift:%f len:%d opts:%"PRId64" ipts:%"PRId64" fifo:%d\n", delta, -1, ost->sync_opts, (int64_t)(get_sync_ipts(ost) * enc->sample_rate), av_fifo_size(ost->fifo)/(ost->st->codec->channels * 2)); + av_resample_compensate(*(struct AVResampleContext**)ost->resample, comp, enc->sample_rate); + } + } + }else + ost->sync_opts= lrintf(get_sync_ipts(ost, pFFmpeg) * enc->sample_rate) +- - av_fifo_size(&ost->fifo)/(ost->st->codec->channels * 2); //FIXME wrong ++ - av_fifo_size(ost->fifo)/(ost->st->codec->channels * 2); //FIXME wrong + + if (ost->audio_resample) { + buftmp = audio_buf; +@@ -260,11 +260,11 @@ + /* now encode as many frames as possible */ + if (enc->frame_size > 1) { + /* output resampled raw samples */ +- av_fifo_write(&ost->fifo, buftmp, size_out); ++ av_fifo_generic_write(ost->fifo, buftmp, size_out, NULL); + + frame_bytes = enc->frame_size * 2 * enc->channels; + +- while (av_fifo_read(&ost->fifo, audio_buf, frame_bytes) == 0) { ++ while (av_fifo_generic_read(ost->fifo, audio_buf, frame_bytes, NULL) == 0) { + AVPacket pkt; + av_init_packet(&pkt); + +@@ -1020,11 +1020,11 @@ + /* XXX: allocate the subtitles in the codec ? */ + if (subtitle_to_free) { + if (subtitle_to_free->rects != NULL) { +- for (i = 0; i < subtitle_to_free->num_rects; i++) { ++/* for (i = 0; i < subtitle_to_free->num_rects; i++) { + av_free(subtitle_to_free->rects[i].bitmap); + av_free(subtitle_to_free->rects[i].rgba_palette); + } +- av_freep(&subtitle_to_free->rects); ++*/ av_freep(&subtitle_to_free->rects); + } + subtitle_to_free->num_rects = 0; + subtitle_to_free = NULL; +@@ -1054,13 +1054,13 @@ + + switch(ost->st->codec->codec_type) { + case CODEC_TYPE_AUDIO: +- fifo_bytes = av_fifo_size(&ost->fifo); ++ fifo_bytes = av_fifo_size(ost->fifo); + ret = 0; + /* encode any samples remaining in fifo */ + if(fifo_bytes > 0 && enc->codec->capabilities & CODEC_CAP_SMALL_LAST_FRAME) { + int fs_tmp = enc->frame_size; + enc->frame_size = fifo_bytes / (2 * enc->channels); +- if(av_fifo_read(&ost->fifo, (uint8_t *)samples, fifo_bytes) == 0) { ++ if(av_fifo_generic_read(ost->fifo, (uint8_t *)samples, fifo_bytes, NULL) == 0) { + ret = avcodec_encode_audio(enc, pFFmpeg->bit_buffer, pFFmpeg->bit_buffer_size, samples); + } + enc->frame_size = fs_tmp; +@@ -1309,7 +1309,7 @@ + } else { + switch(codec->codec_type) { + case CODEC_TYPE_AUDIO: +- if (av_fifo_init(&ost->fifo, 2 * MAX_AUDIO_PACKET_SIZE)) ++ if ((ost->fifo = av_fifo_alloc(2 * MAX_AUDIO_PACKET_SIZE)) == NULL) + goto fail; + + if (codec->channels == icodec->channels && +@@ -1766,7 +1766,7 @@ + fclose(ost->logfile); + ost->logfile = NULL; + } +- av_fifo_free(&ost->fifo); /* works even if fifo is not ++ av_fifo_free(ost->fifo); /* works even if fifo is not + initialized but set to zero */ + av_free(ost->pict_tmp.data[0]); + #ifdef HAVE_LIBSWSCALE |