projects
/
goodguy
/
history.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
alt transport keys, snap editing, grab focus, inv hilight clr, subtitle fix
[goodguy/history.git]
/
cinelerra-5.1
/
cinelerra
/
ffmpeg.C
diff --git
a/cinelerra-5.1/cinelerra/ffmpeg.C
b/cinelerra-5.1/cinelerra/ffmpeg.C
index 63a1196a2cd8b9bd0ee5c45127ff69b61d900eb1..e031dcdbac7f19e184954f828683cb3eaf386a2a 100644
(file)
--- a/
cinelerra-5.1/cinelerra/ffmpeg.C
+++ b/
cinelerra-5.1/cinelerra/ffmpeg.C
@@
-33,6
+33,7
@@
#define AUDIO_INBUF_SIZE 0x10000
#define VIDEO_REFILL_THRESH 0
#define AUDIO_REFILL_THRESH 0x1000
#define AUDIO_INBUF_SIZE 0x10000
#define VIDEO_REFILL_THRESH 0
#define AUDIO_REFILL_THRESH 0x1000
+#define AUDIO_MIN_FRAME_SZ 128
Mutex FFMPEG::fflock("FFMPEG::fflock");
Mutex FFMPEG::fflock("FFMPEG::fflock");
@@
-395,9
+396,7
@@
int FFStream::decode(AVFrame *frame)
int FFStream::load_filter(AVFrame *frame)
{
int FFStream::load_filter(AVFrame *frame)
{
- av_frame_unref(frame);
- int ret = av_buffersrc_add_frame_flags(buffersrc_ctx,
- frame, AV_BUFFERSRC_FLAG_KEEP_REF);
+ int ret = av_buffersrc_add_frame_flags(buffersrc_ctx, frame, 0);
if( ret < 0 )
eprintf(_("av_buffersrc_add_frame_flags failed\n"));
return ret;
if( ret < 0 )
eprintf(_("av_buffersrc_add_frame_flags failed\n"));
return ret;
@@
-588,6
+587,7
@@
FFAudioStream::FFAudioStream(FFMPEG *ffmpeg, AVStream *strm, int idx, int fidx)
channel0 = channels = 0;
sample_rate = 0;
mbsz = 0;
channel0 = channels = 0;
sample_rate = 0;
mbsz = 0;
+ frame_sz = AUDIO_MIN_FRAME_SZ;
length = 0;
resample_context = 0;
swr_ichs = swr_ifmt = swr_irate = 0;
length = 0;
resample_context = 0;
swr_ichs = swr_ifmt = swr_irate = 0;
@@
-2113,7
+2113,8
@@
int FFMPEG::decode_activate()
if( st->start_time == AV_NOPTS_VALUE ) continue;
int vidx = ffvideo.size();
while( --vidx >= 0 && ffvideo[vidx]->fidx != i );
if( st->start_time == AV_NOPTS_VALUE ) continue;
int vidx = ffvideo.size();
while( --vidx >= 0 && ffvideo[vidx]->fidx != i );
- if( vidx >= 0 && ffvideo[vidx]->nudge != AV_NOPTS_VALUE ) continue;
+ if( vidx < 0 ) continue;
+ if( ffvideo[vidx]->nudge != AV_NOPTS_VALUE ) continue;
if( vstart_time < st->start_time )
vstart_time = st->start_time;
break; }
if( vstart_time < st->start_time )
vstart_time = st->start_time;
break; }
@@
-2121,11
+2122,12
@@
int FFMPEG::decode_activate()
if( st->start_time == AV_NOPTS_VALUE ) continue;
int aidx = ffaudio.size();
while( --aidx >= 0 && ffaudio[aidx]->fidx != i );
if( st->start_time == AV_NOPTS_VALUE ) continue;
int aidx = ffaudio.size();
while( --aidx >= 0 && ffaudio[aidx]->fidx != i );
- if( aidx >= 0 && ffaudio[aidx]->nudge != AV_NOPTS_VALUE ) continue;
+ if( aidx < 0 ) continue;
+ if( ffaudio[aidx]->frame_sz < avpar->frame_size )
+ ffaudio[aidx]->frame_sz = avpar->frame_size;
+ if( ffaudio[aidx]->nudge != AV_NOPTS_VALUE ) continue;
if( astart_time < st->start_time )
astart_time = st->start_time;
if( astart_time < st->start_time )
astart_time = st->start_time;
- ffaudio[aidx]->frame_sz =
- avpar->frame_size < 128 ? 128 : avpar->frame_size;
break; }
default: break;
}
break; }
default: break;
}