[Cin] Interlace driving me mad .....

Phyllis Smith phylsmith2017 at gmail.com
Sat Feb 20 01:22:48 CET 2021


Andrew,
I just noticed these error messages today and was hoping for a solution as
the interlace mods may not be working as you expected.   Specifically in
the interlace_aspect_autodetect-12 patch that was checked into GIT on
January 18 the compiler is giving the errors:

fileffmpeg.C: In member function ‘virtual int
FFOptionsFormatView::handle_event()’:
fileffmpeg.C:1947:24: warning: ISO C++ forbids converting a string constant
to ‘char*’ [-Wwrite-strings]
 1947 |  char *replace_name0 = "mov";
      |                        ^~~~~
fileffmpeg.C:1948:24: warning: ISO C++ forbids converting a string constant
to ‘char*’ [-Wwrite-strings]
 1948 |  char *replace_name1 = "mpegts";
      |                        ^~~~~~~~
fileffmpeg.C:1949:24: warning: ISO C++ forbids converting a string constant
to ‘char*’ [-Wwrite-strings]
 1949 |  char *replace_name2 = "matroska";

*The patch code was:*
--- a/cinelerra-5.1/cinelerra/fileffmpeg.C
+++ b/cinelerra-5.1/cinelerra/fileffmpeg.C
@@ -326,7 +326,7 @@ int FileFFMPEG::open_file(int rd, int wr)
        int result = 0;
        if( ff ) return 1;
        ff = new FFMPEG(this);
...
@@ -1938,6 +1943,15 @@ int FFOptionsFormatView::handle_event()
 {
        Asset *asset = fmt_config->asset;
        char *format_name = asset->fformat;


*+       char *replace_name0 = "mov";+       char *replace_name1 =
"mpegts";+       char *replace_name2 = "matroska";*
+       if (!strcmp(format_name, "qt"))

On Wed, Nov 18, 2020 at 9:49 AM Andrew Randrianasulu via Cin <
cin at lists.cinelerra-gg.org> wrote:

> So, I grep'ed ffmpeg-4.3 sources and apparently thise falgs consumed by
> few encoders outside of mpeg2/4:
>
> guest at slax:/dev/shm/cinelerra/cinelerra-5.1/cinelerra$ grep
> 'AV_CODEC_FLAG_INTERLACED_DCT' ../thirdparty/ffmpeg-4.3/libav
> libavcodec/    libavdevice/   libavfilter/   libavformat/   libavresample/
> libavutil/
> guest at slax:/dev/shm/cinelerra/cinelerra-5.1/cinelerra$ grep
> 'AV_CODEC_FLAG_INTERLACED_DCT' ../thirdparty/ffmpeg-4.3/libavcodec/*.c
> ../thirdparty/ffmpeg-4.3/libavcodec/cuviddec.c:        avctx->flags |=
> AV_CODEC_FLAG_INTERLACED_DCT;
> ../thirdparty/ffmpeg-4.3/libavcodec/cuviddec.c:        avctx->flags &=
> ~AV_CODEC_FLAG_INTERLACED_DCT;
> ../thirdparty/ffmpeg-4.3/libavcodec/dnxhddata.c:            interlaced ==
> !!(avctx->flags & AV_CODEC_FLAG_INTERLACED_DCT) &&
> ../thirdparty/ffmpeg-4.3/libavcodec/dnxhdenc.c:    if (avctx->flags &
> AV_CODEC_FLAG_INTERLACED_DCT) {
> ../thirdparty/ffmpeg-4.3/libavcodec/dvenc.c:    if (s->avctx->flags &
> AV_CODEC_FLAG_INTERLACED_DCT) {
> ../thirdparty/ffmpeg-4.3/libavcodec/libx264.c:    x4->params.b_interlaced
>  = avctx->flags & AV_CODEC_FLAG_INTERLACED_DCT;
> ../thirdparty/ffmpeg-4.3/libavcodec/libxavs.c:    x4->params.b_interlaced
>  = avctx->flags & AV_CODEC_FLAG_INTERLACED_DCT;
> ../thirdparty/ffmpeg-4.3/libavcodec/mpegvideo_enc.c:    if
> ((s->avctx->flags & (AV_CODEC_FLAG_INTERLACED_DCT |
> AV_CODEC_FLAG_INTERLACED_ME)) &&
> ../thirdparty/ffmpeg-4.3/libavcodec/mpegvideo_enc.c:
> s->progressive_sequence = !(avctx->flags & (AV_CODEC_FLAG_INTERLACED_DCT |
> ../thirdparty/ffmpeg-4.3/libavcodec/mpegvideo_enc.c:        if
> (s->avctx->flags & AV_CODEC_FLAG_INTERLACED_DCT) {
> ../thirdparty/ffmpeg-4.3/libavcodec/mpegvideo_enc.c:        if
> (s->avctx->flags & AV_CODEC_FLAG_INTERLACED_DCT) {
> ../thirdparty/ffmpeg-4.3/libavcodec/nvenc.c:    if (ret < 1 &&
> avctx->flags & AV_CODEC_FLAG_INTERLACED_DCT) {
> ../thirdparty/ffmpeg-4.3/libavcodec/nvenc.c:    if (avctx->flags &
> AV_CODEC_FLAG_INTERLACED_DCT) {
> ../thirdparty/ffmpeg-4.3/libavcodec/nvenc.c:        if (avctx->flags &
> AV_CODEC_FLAG_INTERLACED_DCT) {
> ../thirdparty/ffmpeg-4.3/libavcodec/pngenc.c:    s->is_progressive =
> !!(avctx->flags & AV_CODEC_FLAG_INTERLACED_DCT);
> ../thirdparty/ffmpeg-4.3/libavcodec/proresenc_anatoliy.c:
> ctx->is_interlaced = !!(avctx->flags & AV_CODEC_FLAG_INTERLACED_DCT);
> ../thirdparty/ffmpeg-4.3/libavcodec/proresenc_kostya.c:    if
> (avctx->flags & AV_CODEC_FLAG_INTERLACED_DCT)
> ../thirdparty/ffmpeg-4.3/libavcodec/proresenc_kostya.c:    int interlaced
> = !!(avctx->flags & AV_CODEC_FLAG_INTERLACED_DCT);
> ../thirdparty/ffmpeg-4.3/libavcodec/qsvenc.c:    if (avctx->flags &
> AV_CODEC_FLAG_INTERLACED_DCT) {
> guest at slax:/dev/shm/cinelerra/cinelerra-5.1/cinelerra$ grep
> 'AV_CODEC_FLAG_INTERLACED_ME' ../thirdparty/ffmpeg-4.3/libavcodec/*.c
> ../thirdparty/ffmpeg-4.3/libavcodec/huffyuvenc.c:    s->interlaced =
> avctx->flags & AV_CODEC_FLAG_INTERLACED_ME ? 1 : 0;
> ../thirdparty/ffmpeg-4.3/libavcodec/motion_est.c:        if
> ((s->avctx->flags & AV_CODEC_FLAG_INTERLACED_ME)
> ../thirdparty/ffmpeg-4.3/libavcodec/motion_est.c:        if
> ((s->avctx->flags & AV_CODEC_FLAG_INTERLACED_ME)
> ../thirdparty/ffmpeg-4.3/libavcodec/motion_est.c:    if (s->avctx->flags &
> AV_CODEC_FLAG_INTERLACED_ME) {
> ../thirdparty/ffmpeg-4.3/libavcodec/mpegvideo.c:        (s->avctx->flags &
> AV_CODEC_FLAG_INTERLACED_ME)) {
> ../thirdparty/ffmpeg-4.3/libavcodec/mpegvideo_enc.c:    if
> ((s->avctx->flags & (AV_CODEC_FLAG_INTERLACED_DCT |
> AV_CODEC_FLAG_INTERLACED_ME)) &&
> ../thirdparty/ffmpeg-4.3/libavcodec/mpegvideo_enc.c:
>                           AV_CODEC_FLAG_INTERLACED_ME) ||
> ../thirdparty/ffmpeg-4.3/libavcodec/mpegvideo_enc.c:            if
> (s->avctx->flags & AV_CODEC_FLAG_INTERLACED_ME) {
> ../thirdparty/ffmpeg-4.3/libavcodec/mpegvideo_enc.c:            if
> (s->avctx->flags & AV_CODEC_FLAG_INTERLACED_ME) {
> ../thirdparty/ffmpeg-4.3/libavcodec/mpegvideo_enc.c:            if
> (s->avctx->flags & AV_CODEC_FLAG_INTERLACED_ME) {
>
>
> So, reworked this section again ... basically only excluding mjpeg codec
> case from setting those flags, instead of whilelisting mpeg2/4 only
>
> Strangely ffv1/avi shows interlace (with my patch) if source was Top Field
> First and not showing it if source was Bottom Field First ..:/
>
> dv file re-encoded as dv_ntsc.avi shows bff correctly, it seems.
> mp4 container with h264 also gets it right now ....
> mpeg2 works (but not sure if field order correct or now ..I'm confused by
> ffmpeg source :/)
> mkv seems to work (but it was working before)
>
> https://cloud.mail.ru/public/5AM1/275yC576u
>
> How to test those 'tb/bb/tt/bt' cases? There must be some  artificial
> picture clearly showing if I did it wrong ..Not found it yet.
>
>
>
>
> --
> Cin mailing list
> Cin at lists.cinelerra-gg.org
> https://lists.cinelerra-gg.org/mailman/listinfo/cin
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.cinelerra-gg.org/pipermail/cin/attachments/20210219/7acd6532/attachment.htm>


More information about the Cin mailing list