Репозиторий Sisyphus
Последнее обновление: 1 октября 2023 | Пакетов: 18631 | Посещений: 37891943
en ru br
Репозитории ALT
D:2.4.0.cvs20070519-alt0.3
5.1: 2.4.1-alt11.cvs20080708.4
4.1: 2.4.0-alt11.cvs20070909.3
4.0: 2.4.0-alt10.cvs20070909.M40.1
www.altlinux.org/Changes

Группа :: Видео
Пакет: xdtv

 Главная   Изменения   Спек   Патчи   Sources   Загрузить   Gear   Bugs and FR  Repocop 

Патч: xawdecode-cvs20070909-divx.patch
Скачать


diff -uNr xawdecode/src/divx.c xawdecode-new/src/divx.c
--- xawdecode/src/divx.c	2007-09-10 23:13:34 +0400
+++ xawdecode-new/src/divx.c	2007-09-10 23:05:36 +0400
@@ -1,7 +1,7 @@
 /*****************************************************************************
  * divx.c: DivX recording
  *****************************************************************************
- * $Id: divx.c,v 1.205 2007/05/01 17:59:00 alainjj Exp $
+ * $Id: divx.c,v 1.214 2007/07/20 17:22:31 pingus77 Exp $
  *****************************************************************************
  * Copyright (C) 2001 Keuleu
  *
@@ -135,7 +135,9 @@
       0, // stream
   63427, // http_port
       0, // maxsize, in Mb
+#ifdef HAVE_LAME
       1, // correctdelaylame
+#endif
 };
 
 #ifdef HAVE_FFMPEG
@@ -358,12 +360,12 @@
   {-1,NULL}
 };
 
+#ifdef HAVE_FFMPEG
 static char *av_buffer = NULL, *av_buffer0 = NULL;
 static int  av_buffer_size = 0, av_buffer0_l;
-
-#ifdef HAVE_FFMPEG
 static AVCodec *av_codec = NULL;
 AVCodecContext *audio_codec_context = NULL;
+
 int xdtv_to_audioffmpeg(int x) {
   switch(x) {
   case FFMPEG_MP2: return CODEC_ID_MP2;
@@ -850,7 +852,7 @@
 
 char * get_filename(void) {
   char *filename=NULL;
-  char begin_name[256];
+  char begin_name[sizeof(wchar_t)*256];
   struct stat buf;
   char *divx_file;
   update_divxfilename();
@@ -1193,6 +1195,7 @@
 #ifdef HAVE_FFMPEG
   else if(xdtv_to_ffmpeg(divx.codec)!=-1) {
     avcodec_init();
+    avcodec_register_all();
 #if LIBAVCODEC_BUILD <= 4759
     sprintf(xawmesstmp, translate("divx_init: initializing %s version %d (build %d)\n"), codec_name, avcodec_version(), avcodec_build());
 #else
@@ -1202,70 +1205,7 @@
     sprintf(xawmesstmp, translate("divx_init: initializing %s - build %i.%i.%i\n"), codec_name, A_div.quot, B_div.quot, B_div.rem);}
 #endif
     strcat(xawmessage,xawmesstmp);
-    switch(divx.codec) {
-#ifdef HAVE_FFMPEG_XVID
-#if LIBAVCODEC_BUILD >= 4719
-      case FFMPEG_XVID: register_avcodec(&xvid_encoder); break;
-#endif
-#endif
-      case FFMPEG_MPEG4: register_avcodec(&mpeg4_encoder); break;
-      case FFMPEG_MPEG1: register_avcodec(&mpeg1video_encoder); break;
-#if LIBAVCODEC_BUILD >= 4676
-      case FFMPEG_MPEG2: register_avcodec(&mpeg2video_encoder); break;
-#endif
-      case FFMPEG_MJPEG: register_avcodec(&mjpeg_encoder); break;
-#if LIBAVCODEC_BUILD >= 4670
-      case FFMPEG_LJPEG: register_avcodec(&ljpeg_encoder); break;
-      case FFMPEG_FLV1: register_avcodec(&flv_encoder); break;
-#endif
-#if LIBAVCODEC_BUILD >= 4735
-      case FFMPEG_RV20: register_avcodec(&rv20_encoder); break;
-#endif
-      case FFMPEG_RV10: register_avcodec(&rv10_encoder); break;
-#ifdef HAVE_FFMPEG_X264
-#if LIBAVCODEC_BUILD >= 4748
-      case FFMPEG_X264: register_avcodec(&x264_encoder); break;
-#endif
-#endif
-      case FFMPEG_H263P: register_avcodec(&h263p_encoder); break;
-      case FFMPEG_H263: register_avcodec(&h263_encoder); break;
-#if LIBAVCODEC_BUILD >= 4729
-      case FFMPEG_H261: register_avcodec(&h261_encoder); break;
-#endif
-      case FFMPEG_MSMPEG4V3: register_avcodec(&msmpeg4v3_encoder); break;
-      case FFMPEG_MSMPEG4V2: register_avcodec(&msmpeg4v2_encoder); break;
-/* Already implemented into the 0.4.6 version but only work correctly with the 0.4.7 version */
-#if LIBAVCODEC_BUILD >= 4675
-      case FFMPEG_WMV2: register_avcodec(&wmv2_encoder); break;
-#endif
-      case FFMPEG_WMV1: register_avcodec(&wmv1_encoder); break;
-#if LIBAVCODEC_BUILD >= 4677
-      case FFMPEG_ASV2: register_avcodec(&asv2_encoder); break;
-#endif
-#if LIBAVCODEC_BUILD >= 4668
-      case FFMPEG_ASV1: register_avcodec(&asv1_encoder); break;
-#endif
-/* appeared with the 4719 version but don't work correctly actually */
-#if LIBAVCODEC_BUILD >= 16777215
-      case FFMPEG_SVQ1: register_avcodec(&svq1_encoder); break;
-#endif
-/* appeared with the 4669 version
-but only work correctly with the 4755 version */
-#if LIBAVCODEC_BUILD >= 4755
-      case FFMPEG_FFV1: register_avcodec(&ffv1_encoder); break;
-#endif
-#if LIBAVCODEC_BUILD >= 4719
-      case FFMPEG_SNOW: register_avcodec(&snow_encoder); break;
-#endif
-
-#if LIBAVCODEC_BUILD >= 4734
-      case FFMPEG_FFVHUFF: register_avcodec(&ffvhuff_encoder); break;
-#endif
-      case FFMPEG_HUFFYUV: register_avcodec(&huffyuv_encoder); break;
-#if LIBAVCODEC_BUILD >= 4707
-      case FFMPEG_DVVIDEO: register_avcodec(&dvvideo_encoder); break;
-#endif
-    }
+    
     codec = avcodec_find_encoder(xdtv_to_ffmpeg(divx.codec));
     if (codec == NULL)
     {
@@ -2094,30 +2034,24 @@
       return;
     }
     avcodec_init();
+    avcodec_register_all();
+
+    if (audio_codec_context == NULL)
+      audio_codec_context = avcodec_alloc_context();
+    audio_codec_context->codec_id = xdtv_to_audioffmpeg(divx.audio_codec);
+    audio_codec_context->codec_type= CODEC_TYPE_AUDIO;
     switch(divx.audio_codec) {
-      case FFMPEG_MP2: register_avcodec(&mp2_encoder); break;
-#ifdef HAVE_FFMPEG_MP3
-      case FFMPEG_MP3: register_avcodec(&mp3lame_encoder); break;
-#endif
-#ifdef HAVE_FFMPEG_AC3
-      case FFMPEG_AC3: register_avcodec(&ac3_encoder); break;
-#endif
-#ifdef HAVE_FFMPEG_AAC
-      case FFMPEG_AAC: register_avcodec(&faac_encoder); break;
-#endif
-      case FFMPEG_PCMS16LE: register_avcodec(&pcm_s16le_encoder); break;
 #ifdef HAVE_FFMPEG_AMR_NB
-      case FFMPEG_AMR_NB: register_avcodec(&amr_nb_encoder); break;
+      // we force to the maximum bitrate as it's not possible to configure it through the GUI
+      case FFMPEG_AMR_NB: audio_codec_context->bit_rate = 12200; break;
 #endif
 #ifdef HAVE_FFMPEG_AMR_WB
-      case FFMPEG_AMR_WB: register_avcodec(&amr_wb_encoder); break;
+      // we force to the maximum bitrate as it's not possible to configure it through the GUI
+      case FFMPEG_AMR_WB: audio_codec_context->bit_rate = 23850; break;
 #endif
+    // by default you can use the bitrate you want but.... modulo 16... only
+    default: audio_codec_context->bit_rate = (divx.mp3_bitrate * 1000); break;
     }
-    if (audio_codec_context == NULL)
-      audio_codec_context = avcodec_alloc_context();
-    audio_codec_context->codec_id = xdtv_to_audioffmpeg(divx.audio_codec);
-    audio_codec_context->codec_type= CODEC_TYPE_AUDIO;
-    audio_codec_context->bit_rate = (divx.mp3_bitrate * 1000);
     audio_codec_context->sample_rate = divx.audio_freq;
     audio_codec_context->channels = achans;
     av_codec = avcodec_find_encoder(audio_codec_context->codec_id);
diff -uNr xawdecode/src/divx.h xawdecode-new/src/divx.h
--- xawdecode/src/divx.h	2007-05-01 21:59:00 +0400
+++ xawdecode-new/src/divx.h	2007-09-10 23:05:36 +0400
@@ -1,7 +1,7 @@
 /*****************************************************************************
  * divx.h: DivX recording functions and other definitions
  *****************************************************************************
- * $Id: divx.h,v 1.57 2007/05/01 17:59:00 alainjj Exp $
+ * $Id: divx.h,v 1.62 2007/07/20 17:22:31 pingus77 Exp $
  *****************************************************************************
  * Copyright (C) 2001 Keuleu
  *
@@ -212,7 +212,9 @@
   int stream;
   int http_port;
   int maxsize;
+#ifdef HAVE_LAME
   int correctdelaylame;
+#endif
 } divx_t;
 
 #ifdef HAVE_FFMPEG
diff -uNr xawdecode/src/divx_ui.c xawdecode-new/src/divx_ui.c
--- xawdecode/src/divx_ui.c	2007-09-10 23:13:34 +0400
+++ xawdecode-new/src/divx_ui.c	2007-09-10 23:12:40 +0400
@@ -1,7 +1,7 @@
 /*****************************************************************************
  * divx_ui.c: DivX Parameters editor
  *****************************************************************************
- * $Id: divx_ui.c,v 1.113 2007/04/24 19:31:42 estre Exp $
+ * $Id: divx_ui.c,v 1.115 2007/07/20 17:22:31 pingus77 Exp $
  *****************************************************************************
  * Copyright (C) 2001 Keuleu
  *
@@ -167,6 +167,9 @@
 Widget c_audiostreamopen;
 Widget c_audiosave;
 Widget c_audioopenmain;
+#ifdef HAVE_LAME
+Widget c_correctdelaylame_onoff;
+#endif
 
 //streaming 
 Widget c_streamdivxopen;
@@ -202,7 +205,10 @@
   DIVX_AUDIO_FMT,
   DIVX_AUDIO_CODEC,
   DIVX_MP3_VBR,
-  DIVX_STREAM_ONOFF
+  DIVX_STREAM_ONOFF,
+#ifdef HAVE_LAME
+  DIVX_CORRECTDELAYLAME_ONOFF
+#endif
 };
 
 static struct STRTAB on_off_list[] = {
@@ -882,8 +888,30 @@
       if (-1 != (j = popup_menu (widget, translate("Audio Codec"),  translate_struct_copy(cont_handler->a_codecs))))
         {
 	  update_acodec(j);
+#ifdef HAVE_LAME
+          if (divx.audio_codec != LAME)
+            XtVaSetValues(c_correctdelaylame_onoff, XtNsensitive, False, NULL);
+          else
+            XtVaSetValues(c_correctdelaylame_onoff, XtNsensitive, True, NULL);
+#endif
+        }
+      break;
+
+#ifdef HAVE_LAME
+     // Correct Delay Lame
+     case DIVX_CORRECTDELAYLAME_ONOFF:
+      if (-1 != (j = popup_menu (widget, translate("Correct Delay Lame"), on_off_list)))
+        {
+	    divx.correctdelaylame = j;
+            sprintf (label, "%-*s:       %s", ALI(LAB_WIDTH3, translate("Correct Delay Lame")),
+                   int_to_str (divx.correctdelaylame, on_off_list));
+            XtVaSetValues (c_correctdelaylame_onoff, XtNlabel, label, NULL);
+
+	  if (tv_debug)
+	    fprintf(stderr,"Correct Delay Lame: %d\n",divx.correctdelaylame);
         }
       break;
+#endif
 
    case DIVX_MP3_VBR:
       if (-1 != (j = popup_menu (widget, translate("Bitrate Mode"), mp3_vbr_list)))
@@ -1784,10 +1812,24 @@
     divx.audio_codec = AUDIO_UNCOMPRESSED;
     XtVaSetValues(c_compressaudio, XtNsensitive, False, NULL);
   }
+
   sprintf (label, "%-*s:       %s", ALI(LAB_WIDTH3, translate("Audio Codec")),
            int_to_str (divx.audio_codec, audio_codec_list_t));
   XtVaSetValues (c, XtNlabel, label, NULL);
 
+#ifdef HAVE_LAME
+  /* Correct Delay Lame */
+  c_correctdelaylame_onoff = c = XtVaCreateManagedWidget ("divxcorrecdelaylame", commandWidgetClass, divxaudio_paned,
+                               PANED_FIX, NULL);
+    XtAddCallback (c, XtNcallback, divx_menu_cb, (XtPointer) DIVX_CORRECTDELAYLAME_ONOFF);
+    sprintf (label, "%-*s:       %s", ALI(LAB_WIDTH3, translate("Correct Delay Lame")),
+         int_to_str (divx.correctdelaylame, on_off_list));
+    XtVaSetValues (c, XtNlabel, label, NULL);
+    if (divx.audio_codec != LAME)
+      XtVaSetValues(c_correctdelaylame_onoff, XtNsensitive, False, NULL);
+    else
+      XtVaSetValues(c_correctdelaylame_onoff, XtNsensitive, True, NULL);
+#endif
 
   /* Select bitrate mode */
   c_mp3_vbr = c =
@@ -1800,7 +1842,6 @@
     if (divx.audio_codec==AUDIO_UNCOMPRESSED)
       XtVaSetValues(c_mp3_vbr, XtNsensitive, False, NULL);
 
-
   /* MP3 Constant Bitrate Slider */
   p_divxmp3bitrate = p =
     XtVaCreateManagedWidget ("divxmp3bitrate", panedWidgetClass, divxaudio_paned,
 
дизайн и разработка: Vladimir Lettiev aka crux © 2004-2005, Andrew Avramenko aka liks © 2007-2008
текущий майнтейнер: Michael Shigorin