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

Reuss András reussandras at gmail.com
Sun Feb 21 15:43:32 CET 2021


Hi, Phyllis,
Not a real problem, here is a patch.

br
andras

On 2021. 02. 20. 1:22, Phyllis Smith via Cin wrote:
> 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 <mailto: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
>     <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 <mailto:Cin at lists.cinelerra-gg.org>
>     https://lists.cinelerra-gg.org/mailman/listinfo/cin
>     <https://lists.cinelerra-gg.org/mailman/listinfo/cin>
> 
> 

-------------- next part --------------
A non-text attachment was scrubbed...
Name: warningsuppression.patch
Type: text/x-patch
Size: 662 bytes
Desc: not available
URL: <https://lists.cinelerra-gg.org/pipermail/cin/attachments/20210221/cd17a187/attachment.patch>


More information about the Cin mailing list