prev/next label fix in viewer, inout highlight, modify folder layout, ffmpeg scan...
[goodguy/history.git] / cinelerra-5.1 / cinelerra / ffmpeg.C
index ac85cccde78fd3e12d881517040888835ea56734..2845788dc626178e0663e6dc7ddeb36625af0c9e 100644 (file)
 #include "mwindow.h"
 #include "vframe.h"
 
+#ifdef FFMPEG3
+#define url filename
+#else
+#define av_register_all(s)
+#define avfilter_register_all(s)
+#endif
 
 #define VIDEO_INBUF_SIZE 0x10000
 #define AUDIO_INBUF_SIZE 0x10000
@@ -1615,7 +1621,7 @@ void FFMPEG::scan_video_options(Asset *asset, EDL *edl)
                AVCodec *av_codec = !get_codec(video_codec, "video", asset->vcodec) ?
                        avcodec_find_encoder_by_name(video_codec) : 0;
                if( av_codec && av_codec->pix_fmts ) {
-                       if( edl ) {
+                       if( 0 && edl ) { // frequently picks a bad answer
                                int color_model = edl->session->color_model;
                                int max_bits = BC_CModels::calculate_pixelsize(color_model) * 8;
                                max_bits /= BC_CModels::components(color_model);
@@ -1925,6 +1931,7 @@ int FFMPEG::info(char *text, int len)
 int FFMPEG::init_decoder(const char *filename)
 {
        ff_lock("FFMPEG::init_decoder");
+       av_register_all();
        char file_opts[BCTEXTLEN];
        char *bp = strrchr(strcpy(file_opts, filename), '/');
        char *sp = strrchr(!bp ? file_opts : bp, '.');
@@ -2070,6 +2077,7 @@ int FFMPEG::init_encoder(const char *filename)
                return 1;
        }
        ff_lock("FFMPEG::init_encoder");
+       av_register_all();
        char format[BCSTRLEN];
        if( get_format(format, "format", file_format) )
                strcpy(format, file_format);
@@ -2103,7 +2111,9 @@ int FFMPEG::open_encoder(const char *type, const char *spec)
                return 1;
        }
 
+#ifdef HAVE_DV
        if( !strcmp(codec_name, CODEC_TAG_DVSD) ) strcpy(codec_name, "dv");
+#endif
        else if( !strcmp(codec_name, CODEC_TAG_MJPEG) ) strcpy(codec_name, "mjpeg");
        else if( !strcmp(codec_name, CODEC_TAG_JPEG) ) strcpy(codec_name, "jpeg");
 
@@ -2856,6 +2866,7 @@ int FFMPEG::ff_cpus()
 
 int FFVideoStream::create_filter(const char *filter_spec, AVCodecParameters *avpar)
 {
+       avfilter_register_all();
        const char *sp = filter_spec;
        char filter_name[BCSTRLEN], *np = filter_name;
        int i = sizeof(filter_name);
@@ -2896,6 +2907,7 @@ int FFVideoStream::create_filter(const char *filter_spec, AVCodecParameters *avp
 
 int FFAudioStream::create_filter(const char *filter_spec, AVCodecParameters *avpar)
 {
+       avfilter_register_all();
        const char *sp = filter_spec;
        char filter_name[BCSTRLEN], *np = filter_name;
        int i = sizeof(filter_name);
@@ -2980,6 +2992,7 @@ int FFMPEG::scan(IndexState *index_state, int64_t *scan_position, int *canceled)
        if( !frame ) {
                fprintf(stderr,"FFMPEG::scan: ");
                fprintf(stderr,_("av_frame_alloc failed\n"));
+               fprintf(stderr,"FFMPEG::scan:file=%s\n", file_base->asset->path);
                return -1;
        }
 
@@ -3025,6 +3038,7 @@ int FFMPEG::scan(IndexState *index_state, int64_t *scan_position, int *canceled)
                }
                fprintf(stderr,"FFMPEG::scan: ");
                fprintf(stderr,_("codec open failed\n"));
+               fprintf(stderr,"FFMPEG::scan:file=%s\n", file_base->asset->path);
                avcodec_free_context(&avctx);
        }