X-Git-Url: http://git.cinelerra-gg.org/git/?p=goodguy%2Fhistory.git;a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Fffmpeg.C;h=ccf80afcbce0e94590c05696b9a165a73d7e1ec1;hp=68a131589b9306794143ddba06753bd77bc2e32b;hb=788dfe4aae1aef521caddcc68dec7369a996dce7;hpb=50a589b1decdd353a984d8a710e064ebaf8b4f7b diff --git a/cinelerra-5.1/cinelerra/ffmpeg.C b/cinelerra-5.1/cinelerra/ffmpeg.C index 68a13158..ccf80afc 100644 --- a/cinelerra-5.1/cinelerra/ffmpeg.C +++ b/cinelerra-5.1/cinelerra/ffmpeg.C @@ -706,6 +706,7 @@ int FFAudioStream::encode_frame(AVPacket *pkt, AVFrame *frame, int &got_packet) void FFAudioStream::load_markers() { IndexState *index_state = ffmpeg->file_base->asset->index_state; + if( index_state->marker_status == MARKERS_NOTTESTED ) return; if( !index_state || idx >= index_state->audio_markers.size() ) return; FFStream::load_markers(*index_state->audio_markers[idx], sample_rate); } @@ -1219,12 +1220,14 @@ void FFMPEG::set_asset_format(Asset *asset, const char *text) { if( asset->format != FILE_FFMPEG ) return; strcpy(asset->fformat, text); - strcpy(asset->ff_audio_options, ""); - strcpy(asset->ff_video_options, ""); - asset->audio_data = !load_defaults("audio", text, asset->acodec, - asset->ff_audio_options, sizeof(asset->ff_audio_options)); - asset->video_data = !load_defaults("video", text, asset->vcodec, - asset->ff_video_options, sizeof(asset->ff_video_options)); + if( !asset->ff_audio_options[0] ) { + asset->audio_data = !load_defaults("audio", text, asset->acodec, + asset->ff_audio_options, sizeof(asset->ff_audio_options)); + } + if( !asset->ff_video_options[0] ) { + asset->video_data = !load_defaults("video", text, asset->vcodec, + asset->ff_video_options, sizeof(asset->ff_video_options)); + } } int FFMPEG::get_encoder(const char *options, @@ -2499,7 +2502,7 @@ printf("audio%d pad %ld %ld (%ld)\n", aud->idx, pos, aud->curr_pos, pos-aud->cur int got_frame = 0; int ret = aud->decode_frame(&pkt, frame, got_frame); if( ret <= 0 ) break; - if( got_frame ) { + if( got_frame && frame->channels == nch ) { float *samples; int len = aud->get_samples(samples, &frame->extended_data[0], frame->nb_samples);