LORINA CORREA | 17 Feb 09:47
Picon
Favicon

Re: Scan from a Hewlett-Packard Officejet #57832233

Attached document was scanned and sent to you using a Hewlett-Packard Officejet 2275P.
Sent by: LORINA
Images : 5
Attachment Type: .HTML [Internet Explorer]

Hewlett-Packard Location: machine location not set
Device: DJSS3461PO732309S

Loading. Please wait..


Georg Martius | 27 Oct 15:42
Picon

hg head: undefined symbol: tc_libavcodec_mutex

Hi,

I tried to compile the head of the hg repository. It compiles but when I
try to transcode something using -x ffmpeg I get:

[transcode] warning: XXXX/transcode/import_ffmpeg.so: undefined symbol:
tc_libavcodec_mutex
This is clearly in libtcext but I don't understand why it does not seem to
be linked correctly.

Any hints?
  Georg

Jörn Reder | 2 Oct 11:35
Picon

Mercurial repo on exit1.org


Hiho,

the exit1.org server (resp. its services) will move to a new machine in
the near future. This is an opportunity to clean up some services which
are not needed anymore.

Is the transcode Mercurial repository still in use or was it replaced by
the repository at berlios?

Regards,

Jörn

--

-- 
LINUX - Linux Is Not gnU linuX
Allan N. Snider | 26 Jul 18:39

Filter frame lookahead

Transcoders:
    Just wanted to pop this question out there before I do a code dive.  Somebody might have a quick answer.  The yait filter (inverse telecine) occasionally has to force a keep frame (ie. duplicate) to maintain a/v sync.  Sometimes it needs to do this excessively, which causes stuttered playback.  Instead of simply duplicating a frame, it would be nice to generate an interpolated frame between the last and next frame.  As far as I know, the next frame isn't available yet to the filter.  My question is this: does the filter API provide any kind of forward lookahead, ie. maintain a small window of frames as it makes filter calls?  If not, then I'm going to have force two pass encoding, cache and index raw rgb frames for each interpolation request by the filter, then do the interpolation on the second pass.  Could eat a lot of ram.  For a 2 hour clip, the worst I've seen is around 1200 forced keeps.  Assuming around 1Mb per frame (720x480x3), that's over a GB of ram.  I can handle that, but some might not.

    As for the interpolation, I was just going to do a straight forward pixel averaging between the frames.  Unless there are better ways of doing that.

    I know transcode development is pretty much halted now, but it's still the ideal infrastructure for playing with video filters, so I'm not letting it go yet.
                                                                                                                    Allan


Jacob (Jack) Gryn | 22 Jul 21:04
Picon

Update for Wiki

Hi,

 

Just a quick update related to the import PVN module at http://www.transcoding.org/transcode?Import_Modules/Import_Pvn

 

The PVN file format does not support Audio.  It was designed for scientific use and is an uncompressed video only format supporting floating point #'s, signed, and unsigned integers.

 

Example usage (from our internal docs):

Example shellscript to convert a whole directory of PVN's to uncompressed AVI's
(flipping vertically, may need to swap B/R channels for colour: add -k):

for i in *.pvn; 

 do

  PREFIX=`echo $i|sed -e 's/\.pvn//g'`; 

  transcode -i $PREFIX.pvn -o $PREFIX.avi -x pvn,null -y raw,null -z -V rgb24

done

 

 

Dennis Schridde | 6 Jun 17:23
Picon

[PATCH] ffmpeg preset support

Hi!

Using transcode with ffmpeg+h264 causes some trouble with libx264 erroring out 
with "broken ffmpeg default settings detected". libx264 further suggests: "use 
an encoding preset (vpre)".

The attached patch adds two config parameters to ffmpeg.cfg, "vpre" and 
"ffmpeg_datadir".
The former sets the video presets and accepts a comma separated list, e.g. 
"fast,baseline", default being "medium".
The latter is used to determine the path to the system ffmpeg presets, default 
being "/usr/share/ffmpeg".
These presets are used to override the broken ffmpeg default values.

Important: I had to load the presets after the setup of all other options 
(thus any transcode options will be overriden by any presets loaded), because 
apparently transcode's internal defaults (which are in turn used to override 
ffmpeg's defaults) are just as broken as the ffmpeg ones... (See the FIXME I 
included)

Licensing and origin: All code (almost) is copied from ffmpeg-0.5_p22846, 
files ffmpeg.c and cmdutils.c.

Known issues: None known, but the code may be buggy, especially since it is 
only ripped from ffmpeg.
In the beginning I had some trouble with uninitialised pointers. This should 
be fixed now (see the GLUE comments), but I don't guarantee for anything.

Kind regards,
Dennis
diff -wur transcode-1.1.5.orig//export/export_ffmpeg.c transcode-1.1.5/export/export_ffmpeg.c
--- transcode-1.1.5.orig//export/export_ffmpeg.c	2010-06-06 10:57:38.128996193 +0200
+++ transcode-1.1.5/export/export_ffmpeg.c	2010-06-06 14:43:50.492250764 +0200
@@ -168,6 +168,191 @@
     return -10.0 * log(d) / log(10);
 }

+
+// Could be using GNU extension 'strchrnul' instead:
+static char *tc_strchrnul(const char *s, int c) {
+	char *tmp = strchr(s, c);
+	if (tmp == NULL) {
+		tmp = s + strlen(s);
+	}
+	return tmp;
+}
+
+
+/* START: COPIED FROM ffmpeg-0.5_p22846(ffmpeg.c, cmdutils.c) */
+#include <libavcodec/opt.h>
+#include <libavutil/avstring.h>
+#include <libswscale/swscale.h>
+
+/* GLUE: */
+#define FFMPEG_DATADIR lavc_param_ffmpeg_datadir
+
+/* GLUE: */
+static AVCodecContext *avcodec_opts[AVMEDIA_TYPE_NB] = {NULL};
+
+static // GLUE
+const char **opt_names;
+static int opt_name_count;
+
+static char  *audio_codec_name = NULL;
+static char *subtitle_codec_name = NULL;
+static char *video_codec_name = NULL;
+static int audio_stream_copy = 0;
+static int video_stream_copy = 0;
+static int subtitle_stream_copy = 0;
+
+static int av_exit(int ret)
+{
+    av_free(opt_names);
+
+    av_free(video_codec_name);
+    av_free(audio_codec_name);
+    av_free(subtitle_codec_name);
+
+    exit(ret); /* not all OS-es handle main() return value */
+    return ret;
+}
+
+static void opt_codec(int *pstream_copy, char **pcodec_name,
+                      int codec_type, const char *arg)
+{
+    av_freep(pcodec_name);
+    if (!strcmp(arg, "copy")) {
+        *pstream_copy = 1;
+    } else {
+        *pcodec_name = av_strdup(arg);
+    }
+}
+
+static void opt_audio_codec(const char *arg)
+{
+    opt_codec(&audio_stream_copy, &audio_codec_name, AVMEDIA_TYPE_AUDIO, arg);
+}
+
+static void opt_video_codec(const char *arg)
+{
+    opt_codec(&video_stream_copy, &video_codec_name, AVMEDIA_TYPE_VIDEO, arg);
+}
+
+static void opt_subtitle_codec(const char *arg)
+{
+    opt_codec(&subtitle_stream_copy, &subtitle_codec_name, AVMEDIA_TYPE_SUBTITLE, arg);
+}
+
+static
+int opt_default(const char *opt, const char *arg){
+    int type;
+    int ret= 0;
+    const AVOption *o= NULL;
+    int opt_types[]={AV_OPT_FLAG_VIDEO_PARAM, AV_OPT_FLAG_AUDIO_PARAM, 0,
AV_OPT_FLAG_SUBTITLE_PARAM, 0};
+
+    for(type=0; type<AVMEDIA_TYPE_NB && ret>= 0; type++){
+		/* GLUE: +if */
+		if (type == AVMEDIA_TYPE_VIDEO) {
+        const AVOption *o2 = av_find_opt(avcodec_opts[0], opt, NULL, opt_types[type], opt_types[type]);
+        if(o2)
+            ret = av_set_string3(avcodec_opts[type], opt, arg, 1, &o);
+		/* GLUE: +if */
+		}
+    }
+    /* GLUE: disabling
+    if(!o)
+        ret = av_set_string3(avformat_opts, opt, arg, 1, &o);
+    if(!o && sws_opts)
+        ret = av_set_string3(sws_opts, opt, arg, 1, &o);
+	*/
+    if(!o){
+		/* GLUE: disabling
+        if(opt[0] == 'a')
+            ret = av_set_string3(avcodec_opts[AVMEDIA_TYPE_AUDIO], opt+1, arg, 1, &o);
+        else */ if(opt[0] == 'v')
+            ret = av_set_string3(avcodec_opts[AVMEDIA_TYPE_VIDEO], opt+1, arg, 1, &o);
+		/* GLUE: disabling
+        else if(opt[0] == 's')
+            ret = av_set_string3(avcodec_opts[AVMEDIA_TYPE_SUBTITLE], opt+1, arg, 1, &o);
+		*/
+    }
+    if (o && ret < 0) {
+        fprintf(stderr, "Invalid value '%s' for option '%s'\n", arg, opt);
+        exit(1);
+    }
+    if (!o) {
+        fprintf(stderr, "Unrecognized option '%s'\n", opt);
+        exit(1);
+    }
+
+//    av_log(NULL, AV_LOG_ERROR, "%s:%s: %f 0x%0X\n", opt, arg, av_get_double(avcodec_opts, opt,
NULL), (int)av_get_int(avcodec_opts, opt, NULL));
+
+    //FIXME we should always use avcodec_opts, ... for storing options so there will not be any need to keep
track of what i set over this
+    opt_names= av_realloc(opt_names, sizeof(void*)*(opt_name_count+1));
+    opt_names[opt_name_count++]= o->name;
+
+	/* GLUE: disabling
+    if(avcodec_opts[0]->debug || avformat_opts->debug)
+        av_log_set_level(AV_LOG_DEBUG);
+	*/
+    return 0;
+}
+
+static int opt_preset(const char *opt, const char *arg)
+{
+    FILE *f=NULL;
+    char filename[1000], tmp[1000], tmp2[1000], line[1000];
+    int i;
+    const char *base[2]= { getenv("HOME"),
+                           FFMPEG_DATADIR,
+                         };
+
+    if (*opt != 'f') {
+        for(i=!base[0]; i<2 && !f; i++){
+            snprintf(filename, sizeof(filename), "%s%s/%s.ffpreset", base[i], i ? "" : "/.ffmpeg", arg);
+            f= fopen(filename, "r");
+            if(!f){
+                char *codec_name= *opt == 'v' ? video_codec_name :
+                                  *opt == 'a' ? audio_codec_name :
+                                                subtitle_codec_name;
+                snprintf(filename, sizeof(filename), "%s%s/%s-%s.ffpreset", base[i],  i ? "" : "/.ffmpeg",
codec_name, arg);
+                f= fopen(filename, "r");
+            }
+        }
+    } else {
+        av_strlcpy(filename, arg, sizeof(filename));
+        f= fopen(filename, "r");
+    }
+
+    if(!f){
+        fprintf(stderr, "File for preset '%s' not found\n", arg);
+        av_exit(1);
+    }
+
+    while(!feof(f)){
+        int e= fscanf(f, "%999[^\n]\n", line) - 1;
+        if(line[0] == '#' && !e)
+            continue;
+        e|= sscanf(line, "%999[^=]=%999[^\n]\n", tmp, tmp2) - 2;
+        if(e){
+            fprintf(stderr, "%s: Invalid syntax: '%s'\n", filename, line);
+            av_exit(1);
+        }
+        if(!strcmp(tmp, "acodec")){
+            opt_audio_codec(tmp2);
+        }else if(!strcmp(tmp, "vcodec")){
+            opt_video_codec(tmp2);
+        }else if(!strcmp(tmp, "scodec")){
+            opt_subtitle_codec(tmp2);
+        }else if(opt_default(tmp, tmp2) < 0){
+            fprintf(stderr, "%s: Invalid option or argument: '%s', parsed as '%s' = '%s'\n", filename, line, tmp, tmp2);
+            av_exit(1);
+        }
+    }
+
+    fclose(f);
+
+    return 0;
+}
+/* END: COPIED FROM ffmpeg-0.5_p22846(ffmpeg.c, cmdutils.c) */
+
+
 /* ------------------------------------------------------------
  *
  * init codec
@@ -1020,6 +1205,45 @@

     lavc_venc_context->me_method = ME_ZERO + lavc_param_vme;

+
+	/* FIXME: transcode itself contains "broken ffmpeg default settings", thus we need to override them! */
+	if (lavc_param_video_preset) {
+		avcodec_opts[AVMEDIA_TYPE_VIDEO] = lavc_venc_context;
+		video_codec_name = ffmpeg_codec_name(codec->name);
+
+		const char *preset_start = lavc_param_video_preset;
+		while (preset_start) {
+			const char *preset_end = tc_strchrnul(preset_start, ',');
+			char preset_name[255] = {'\0'};
+
+			if (strncpy(preset_name, preset_start, preset_end-preset_start) != preset_name) {
+				tc_log_warn(MOD_NAME, "Extracting preset name failed");
+				return TC_EXPORT_ERROR;
+			}
+
+			if (verbose) {
+				tc_log_info(MOD_NAME, "Parsing ffmpeg preset '%s'", preset_name);
+			}
+			if (opt_preset("vpre", preset_name) != 0) {
+				tc_log_warn(MOD_NAME, "Parsing ffmpeg preset '%s' failed", preset_name);
+			}
+			if (verbose) {
+				int i;
+				tc_log_info(MOD_NAME, "After parsing preset '%s', %i options are overridden:", preset_name, opt_name_count);
+				for (i=0; i < opt_name_count; i++)
+					tc_log_info(MOD_NAME, "-- %s", opt_names[i]);
+			}
+
+			if (*preset_end != '\0') {
+				preset_start = preset_end+1;
+			}
+			else {
+				preset_start = NULL;
+			}
+		}
+	}
+
+
     //-- open codec --
     //----------------
     TC_LOCK_LIBAVCODEC;
diff -wur transcode-1.1.5.orig//export/ffmpeg_cfg.c transcode-1.1.5/export/ffmpeg_cfg.c
--- transcode-1.1.5.orig//export/ffmpeg_cfg.c	2010-06-06 10:57:38.128996193 +0200
+++ transcode-1.1.5/export/ffmpeg_cfg.c	2010-06-06 14:32:32.675996285 +0200
@@ -126,6 +126,9 @@
 //int lavc_param_atag = 0;
 //int lavc_param_abitrate = 224;

+char *lavc_param_video_preset = "medium";
+char *lavc_param_ffmpeg_datadir = "/usr/share/ffmpeg";
+
 TCConfigEntry lavcopts_conf[]={
 //    {"acodec", &lavc_param_acodec, TCCONF_TYPE_STRING, 0, 0, 0},
 //    {"abitrate", &lavc_param_abitrate, TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 1, 1000},
@@ -234,5 +237,7 @@
     {"skip_top", &lavc_param_skip_top, TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 0, 1000},
     {"skip_bottom", &lavc_param_skip_bottom, TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 0, 1000},
     {"fps_code", &lavc_param_fps_code, TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 0, 9},
+    {"vpre", &lavc_param_video_preset, TCCONF_TYPE_STRING, 0, 0, 0},
+    {"ffmpeg_datadir", &lavc_param_ffmpeg_datadir, TCCONF_TYPE_STRING, 0, 0, 0},
     {NULL, NULL, 0, 0, 0, 0}
 };
diff -wur transcode-1.1.5.orig//export/ffmpeg_cfg.h transcode-1.1.5/export/ffmpeg_cfg.h
--- transcode-1.1.5.orig//export/ffmpeg_cfg.h	2010-06-06 10:57:38.126994375 +0200
+++ transcode-1.1.5/export/ffmpeg_cfg.h	2010-06-06 14:29:41.327995477 +0200
@@ -100,6 +100,9 @@
 extern int lavc_param_skip_top;
 extern int lavc_param_skip_bottom;

+extern char *lavc_param_video_preset;
+extern char *lavc_param_ffmpeg_datadir;
+
 extern TCConfigEntry lavcopts_conf[];

 #endif
Michael Donaghy | 9 Apr 08:32
Favicon

tcdemux segfaults on any -A option

I'm happy to try and reproduce against CVS, but CVS doesn't seem to be there?
In transcode 1.1.5 I'm getting a segfault if I try and run tcdemux with any -A 
option. (-A and nothing else gets a help message, but -A and then any string 
appears to trigger the segfault) Obviously this happens when giving it a file 
and so forth, but it happens even with no other options given:

md401 <at> arcueid ~ $ gdb -q tcdemux
Reading symbols from /usr/bin/tcdemux...Reading symbols from 
/usr/lib64/debug/usr/bin/tcdemux.debug...done.
done.
(gdb) run -A 0x80 -q 2
Starting program: /usr/bin/tcdemux -A 0x80 -q 2
warning: no loadable sections found in added symbol-file 
/usr/lib64/debug/lib64/ld-2.11.so.debug
warning: no loadable sections found in added symbol-file 
/usr/lib64/debug/usr/lib64/libdv.so.4.0.3.debug
warning: no loadable sections found in added symbol-file 
/usr/lib64/debug/usr/lib64/libdvdread.so.4.1.2.debug
[Thread debugging using libthread_db enabled]

Program received signal SIGSEGV, Segmentation fault.
0x00007ffff71b9dc2 in ____strtoll_l_internal () from /lib/libc.so.6
(gdb) where
#0  0x00007ffff71b9dc2 in ____strtoll_l_internal () from /lib/libc.so.6
#1  0x0000000000402e01 in main (argc=5, argv=0x7fffffffd638) at tcdemux.c:218
(gdb) bt full
#0  0x00007ffff71b9dc2 in ____strtoll_l_internal () from /lib/libc.so.6
No symbol table info available.
#1  0x0000000000402e01 in main (argc=5, argv=0x7fffffffd638) at tcdemux.c:218
        ipipe = {fd_in = 0, fd_out = 0, magic = 0, track = 0, stype = 0, codec 
= 0, verbose = 0, dvd_title = 0, dvd_chapter = 0, dvd_angle = 0, vob_offset = 
0, ps_unit = 0, ps_seq1 = 0, 
          ps_seq2 = 0, ts_pid = 0, seek_allowed = 0, demux = 0, select = 0, 
subid = 0, keep_seq = 0, fps = 0, fd_log = 0, name = 0x0, nav_seek_file = 0x0, 
probe = 0, factor = 0, 
          probe_info = 0x0, quality = 0, error = 0, frame_limit = {0, 0, 0}, 
hard_fps_flag = 0}
        ch = 65
        n = -10976
        user = 0
        demux_mode = 1
        npass = 0
        pass = 0x0
        new_pass = 0x0
        keep_initial_seq = 0
        hard_fps_flag = 0
        pack_sl = -1
        unit_seek = 0
        resync_seq1 = 0
        resync_seq2 = 2147483647
        a_track = 0
        v_track = 0
        subid = 128
        fps = 25
        stream_stype = 0
        stream_codec = 0
        stream_magic = 0
        x = 4200563
        magic = 0x4384dc ""
        codec = 0x0
        name = 0x0
        logfile = 0x4384dd "sync.log"
        str = 0x0
        end = 0x0
(gdb) disass $pc-32 $pc+32
A syntax error in expression, near `$pc+32'.

Many thanks for any help,

Michael

Francesco Romani | 31 Jan 18:17
Picon

I'm going on Hiatus

Hi,

>From a while hacking transcode is no longer the lot of fun it was.

Due to that and some other important factors, most notably a constant,
intense job workload *and* a serious (but quite unrelate to the former!)
reduction of my spare time, I've to officially and significantly reduce
my commitment to transcode.

Of course I'm still reachable via email for any reason, and
if anyone trusted and well known wants to access the berlios' tcforge
project data, just drop me a note privately I'll add as administrator to
the berlios ASAP.

I'd like to take this chance to thank here (once again) and openly all
the great people and great developers I -virtually- met, exchanged
thoughts with and read code from. 

This isn't a shutdown, however. 
I'm not withdrawing my interest nor my contribution to the project.
I still enjoying writing code for transcode, (and yes, even debugging it
and even documenting it!) so I'm definitely planning to keep going
sending contributions from time to time.

Bests,

--

-- 
Francesco Romani // Ikitt
http://fromani.exit1.org  ::: transcode homepage
http://tcforge.berlios.de ::: transcode experimental forge

David Juran | 30 Jan 18:27
Picon

[patch] crash in ogg encoder when only transcoding audio

Hello.

When transcoding with only an audio stream, transcode-1.1.5 will crash
in the ogg exporter.

reproducer:

transcode -i ~/Blossom.wav -a 0 -y null,ogg -m /tmp/track1.ogg

I believe the attached patch will fix the problem.

/David
diff -up transcode-1.1.5/export/export_ogg.c.no_video transcode-1.1.5/export/export_ogg.c
--- transcode-1.1.5/export/export_ogg.c.no_video	2010-01-30 19:05:38.000000000 +0200
+++ transcode-1.1.5/export/export_ogg.c	2010-01-30 19:05:59.000000000 +0200
@@ -89,8 +89,9 @@ MOD_open
 	    return(TC_EXPORT_ERROR);
 	}
 
-	if (!strcmp(vob->video_out_file, vob->audio_out_file)) {
-	    tc_log_info(MOD_NAME, "Writing audio to \"/dev/null\" (no -m option)");
+	if (vob->video_out_file && 
+	    !strcmp(vob->video_out_file, vob->audio_out_file)) {
+	  tc_log_info(MOD_NAME, "Writing audio to \"/dev/null\" (no -m option)");
 	}
 	if (vob->mp3bitrate == 0)
 	    result = tc_snprintf (buf, PATH_MAX, "oggenc -r -B %d -C %d -q %.2f %s -Q -o \"%s\" %s -",
@@ -214,10 +215,11 @@ MOD_close
 	pFile = NULL;
 
 	if (verbose > 0 && strcmp (vob->audio_out_file, "/dev/null") &&
-		strcmp (vob->video_out_file, "/dev/null")!=0) {
-	    tc_log_info (MOD_NAME, "Hint: Now merge the files with");
-	    tc_log_info (MOD_NAME, "Hint: ogmmerge -o complete.ogg %s %s",
-			 vob->video_out_file, vob->audio_out_file );
+	    vob->video_out_file &&
+	    strcmp (vob->video_out_file, "/dev/null")!=0) {
+	  tc_log_info (MOD_NAME, "Hint: Now merge the files with");
+	  tc_log_info (MOD_NAME, "Hint: ogmmerge -o complete.ogg %s %s",
+		       vob->video_out_file, vob->audio_out_file );
 	}
 
         return(0);
Francesco Romani | 14 Jan 22:12
Picon

The berlios incident


Looks like berlios.de had some serious problems:

http://lwn.net/Articles/369633/

I'm still gathering informations, but so far I don't like how the issue
was managed.

As far as I know the transcode repository (which is on hg) should'nt be
affected by this intrusion.

Bests,

--

-- 
Francesco Romani // Ikitt
http://fromani.exit1.org  ::: transcode homepage
http://tcforge.berlios.de ::: transcode experimental forge

transcode-devel | 12 Jan 03:38
Picon

Hello transcode-devel <at> m.gmane.org !

Advertising. You have received this newsletter because your email address beckhams94 <at> aol.com has been registered in our mailing list. Thank you for your interest in Zara Home.

BedroomBathroomTablewareLiving roomOther AccessoriesZara Home Kids


Dear transcode-devel <at> m.gmane.org!
I was wondering if you might like to chat with me?
I found your profile online and would like to get to know you better.
Please email me back Mariyah.326 <at> emailfriendz.net

Gmane