X-Git-Url: https://cinelerra-gg.org/git/?a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Fbdwrite.C;h=54b6ad216fd15674ef0a5f6cff6777dcdd72e0cd;hb=b7fd8ccc37991c54a154a7c858da0c70188f7284;hp=d2ae7e6f34dd55c01971c6759f43716d78fbfb5e;hpb=172ef8e133b80572d7d81b06f6658ce89bf709a3;p=goodguy%2Fcinelerra.git diff --git a/cinelerra-5.1/cinelerra/bdwrite.C b/cinelerra-5.1/cinelerra/bdwrite.C index d2ae7e6f..54b6ad21 100644 --- a/cinelerra-5.1/cinelerra/bdwrite.C +++ b/cinelerra-5.1/cinelerra/bdwrite.C @@ -2530,7 +2530,12 @@ static int field_probe(AVFormatContext *fmt_ctx, AVStream *st) AVDictionary *copts = 0; //av_dict_copy(&copts, opts, 0); AVCodecID codec_id = st->codecpar->codec_id; +#if LIBAVCODEC_VERSION_INT <= AV_VERSION_INT(58,134,100) AVCodec *decoder = avcodec_find_decoder(codec_id); +#endif +#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(59,16,100) + const AVCodec *decoder = avcodec_find_decoder(codec_id); +#endif AVCodecContext *ctx = avcodec_alloc_context3(decoder); if( !ctx ) { fprintf(stderr,"codec alloc failed\n"); @@ -2570,6 +2575,22 @@ static int field_probe(AVFormatContext *fmt_ctx, AVStream *st) av_packet_unref(&ipkt); av_frame_free(&ipic); avcodec_free_context(&ctx); + + if (ilaced < 0) { + fprintf(stderr, "warning bdwrite uses field into from stream \n", st->codecpar->field_order); + switch(st->codecpar->field_order) { + case AV_FIELD_TT: + case AV_FIELD_TB: + case AV_FIELD_BB: + case AV_FIELD_BT: + return 1; + case AV_FIELD_PROGRESSIVE: + return 0; + default: + return -1; + } + } + return ilaced; } @@ -2604,7 +2625,13 @@ int media_info::scan() stream *s = new stream(type, i); s->pid = st->id; AVCodecID codec_id = st->codecpar->codec_id; +#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(59,16,100) + const AVCodec *decoder = avcodec_find_decoder(codec_id); +#endif +#if LIBAVCODEC_VERSION_INT <= AV_VERSION_INT(58,134,100) AVCodec *decoder = avcodec_find_decoder(codec_id); +#endif + s->ctx = avcodec_alloc_context3(decoder); if( !s->ctx ) { fprintf(stderr, "avcodec_alloc_context failed\n"); @@ -3161,7 +3188,7 @@ int main(int ac, char **av) { char *path = av[1]; - if( mkbdmv(path) ) return 1; + av_log_set_level(AV_LOG_FATAL); //av_log_set_level(AV_LOG_VERBOSE); //av_log_set_level(AV_LOG_DEBUG); @@ -3171,10 +3198,11 @@ main(int ac, char **av) int opt = getopt(ac, av, "c:"); if (opt == 'c') { - chapter_every_n_sec = optarg[0]; start = 3; } + chapter_every_n_sec = atoi(optarg); start = 4; + path = av[3]; printf("Chapter interval: %i \n", chapter_every_n_sec );} else start = 2; - + if( mkbdmv(path) ) return 1; for( int ii=start; ii