Hello, all! I was trying to get field order autodetection working in CinelerraGG (our developer sadly died, so I can't ask him anymore ...) I get field_order like this: int FFMPEG::ff_interlace(int stream) { /* reads from demuxer because codec frame not ready */ int interlace = ffvideo[stream]->st->codecpar->field_order; printf("interlace: %i\n", interlace); switch (interlace) { case AV_FIELD_TT: return ILACE_MODE_TOP_FIRST; case AV_FIELD_BB: return ILACE_MODE_BOTTOM_FIRST; case AV_FIELD_PROGRESSIVE: return ILACE_MODE_NOTINTERLACED; default: return ILACE_MODE_UNDETECTED; } } Unfortunately, this only work for mpegts streams and not for, say, dv. I tried to add some code in libavformat/dv.c, and while it sort-of working, it apparently doesn't work early enough (at stream probe time?) in cinelerra/cinelerra-5.1/thirdparty/ffmpeg-4.3/libavformat/dv.c in function dv_extract_video_info() I added those lines (logic might be wrong, but I can fix it later, I used libavcodec/dvdec.c as example): if (c->sys->height == 720) { par->field_order = AV_FIELD_PROGRESSIVE;} else if (c->sys->height == 1080) { int ilaced = 1; int tff = (vsc_pack[3] & 0x40) == 0x40; par->field_order = tff ? AV_FIELD_TT : 0; } else { int ilaced = (vsc_pack[3] & 0x10) == 0x10; int tff = !(vsc_pack[3] & 0x40) == 0x40; par->field_order = tff ? 0 : AV_FIELD_BB; } //printf("Field order: %i \n", par->field_order); It prints 'field order: 3" for usual pal DV example, but ffprobe (from where I get my logic for extracting field_order) still says: /dev/shm/cinelerra/cinelerra-5.1/thirdparty/ffmpeg-4.3/ffprobe -show_streams /dev/shm/qt_dv_pal_test.mov Field order: 3 Field order: 3 Field order: 3 Field order: 3 Field order: 3 Field order: 3 Field order: 3 Field order: 3 Field order: 3 Field order: 3 Field order: 3 Field order: 3 Field order: 3 Field order: 3 Field order: 3 Field order: 3 Field order: 3 Field order: 3 Field order: 3 Field order: 3 Field order: 3 Field order: 3 Field order: 3 Field order: 3 Field order: 3 Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/dev/shm/qt_dv_pal_test.mov': Metadata: creation_time : 2002-10-04T18:46:28.000000Z Duration: 00:00:04.45, start: 0.000000, bitrate: 57948 kb/s Stream #0:0(eng): Video: dvvideo (dvcp / 0x70637664), yuv420p, 720x576 [SAR 16:15 DAR 4:3], 28800 kb/s, 25 fps, 25 tbr, 600 tbn, 25 tbc (default) Metadata: creation_time : 2002-10-04T18:46:28.000000Z handler_name : Apple Video Media Handler encoder : DV - PAL Stream #0:1(eng): Audio: pcm_s16le (dvca / 0x61637664), 48000 Hz, 2 channels, s16, 1536 kb/s (default) Metadata: creation_time : 2002-10-04T18:46:28.000000Z handler_name : Apple Sound Media Handler [STREAM] index=0 codec_name=dvvideo codec_long_name=DV (Digital Video) profile=unknown codec_type=video codec_time_base=1/25 codec_tag_string=dvcp codec_tag=0x70637664 width=720 height=576 coded_width=720 coded_height=576 closed_captions=0 has_b_frames=0 sample_aspect_ratio=16:15 display_aspect_ratio=4:3 pix_fmt=yuv420p level=-99 color_range=unknown color_space=unknown color_transfer=unknown color_primaries=unknown chroma_location=topleft field_order=unknown timecode=N/A [a lot more skiped] I tried to add same logic into dv_read_header(), but dv_extract_pack(frame, dv_video_control); wants 'frame' and I have no idea from where to plug it. Idea about putting this in header reading code come from libavformat/yuv4mpegdec.c Any ideas?