Credit Andrew - updating patches for FFmpeg 7.0 as needed since 6.1, now at 7.0,...
[goodguy/cinelerra.git] / cinelerra-5.1 / cinelerra / bdwrite.C
index 1017c1690670046fa831d603a73474085601f2b2..1f7f027ef808e5bd54022381865fd52784905f24 100644 (file)
@@ -1,3 +1,23 @@
+/*
+ * CINELERRA
+ * Copyright (C) 2016-2020 William Morrow
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published
+ * by the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ * USA
+ */
+
 //#include "bd.h"
 //This program was created by inverting libbluray, without any docs,
 //  so it is probably got problems.  Still, works on my Samsung player.
 //#include "bd.h"
 //This program was created by inverting libbluray, without any docs,
 //  so it is probably got problems.  Still, works on my Samsung player.
@@ -2575,6 +2595,22 @@ static int field_probe(AVFormatContext *fmt_ctx, AVStream *st)
   av_packet_unref(&ipkt);
   av_frame_free(&ipic);
   avcodec_free_context(&ctx);
   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;
 }
 
   return ilaced;
 }
 
@@ -2639,7 +2675,7 @@ int media_info::scan()
       break; }
     case AVMEDIA_TYPE_AUDIO: {
       s->coding_type = bd_coding_type(codec_id);
       break; }
     case AVMEDIA_TYPE_AUDIO: {
       s->coding_type = bd_coding_type(codec_id);
-      s->format = bd_audio_format(st->codecpar->channels);
+      s->format = bd_audio_format(st->codecpar->ch_layout.nb_channels);
       s->rate = bd_audio_rate(st->codecpar->sample_rate);
       strcpy((char*)s->lang, "eng");
       break; }
       s->rate = bd_audio_rate(st->codecpar->sample_rate);
       strcpy((char*)s->lang, "eng");
       break; }