Репозитории 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 |
Группа :: Видео
Пакет: 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,