diff -urP -x '*~' -x '*.1' vcdimager-0.7.12/frontends/cli/vcdimager.c vcdimager-hack/frontends/cli/vcdimager.c --- vcdimager-0.7.12/frontends/cli/vcdimager.c 2001-08-29 10:52:06.000000000 -0400 +++ vcdimager-hack/frontends/cli/vcdimager.c 2002-12-12 03:22:04.000000000 -0500 @@ -427,7 +427,7 @@ vcd_obj_append_sequence_play_item (gl_vcd_obj, vcd_mpeg_source_new (data_source), - NULL, NULL); + NULL, NULL, NULL); } diff -urP -x '*~' -x '*.1' vcdimager-0.7.12/frontends/xml/README-nice-mpeg vcdimager-hack/frontends/xml/README-nice-mpeg --- vcdimager-0.7.12/frontends/xml/README-nice-mpeg 1969-12-31 19:00:00.000000000 -0500 +++ vcdimager-hack/frontends/xml/README-nice-mpeg 2002-12-13 17:27:40.000000000 -0500 @@ -0,0 +1,5 @@ +Added option + vcd 'nice mpeg file names' true|false + +Added option to sequence items + file-name diff -urP -x '*~' -x '*.1' vcdimager-0.7.12/frontends/xml/vcdxml.h vcdimager-hack/frontends/xml/vcdxml.h --- vcdimager-0.7.12/frontends/xml/vcdxml.h 2001-09-28 16:32:53.000000000 -0400 +++ vcdimager-hack/frontends/xml/vcdxml.h 2002-12-13 17:18:50.000000000 -0500 @@ -69,6 +69,7 @@ #define OPT_LEADOUT_PREGAP "leadout pregap" #define OPT_LEADOUT_PAUSE "leadout pause" #define OPT_RELAXED_APS "relaxed aps" +#define OPT_NICE_MPEG_FILE_NAMES "nice mpeg file names" #define OPT_SVCD_VCD3_ENTRYSVD "svcd vcd30 entrysvd" #define OPT_SVCD_VCD3_MPEGAV "svcd vcd30 mpegav" #define OPT_SVCD_VCD3_TRACKSVD "svcd vcd30 tracksvd" @@ -84,6 +85,7 @@ struct sequence_t { char *id; + char *file_name; char *src; char *default_entry_id; diff -urP -x '*~' -x '*.1' vcdimager-0.7.12/frontends/xml/vcd_xml_master.c vcdimager-hack/frontends/xml/vcd_xml_master.c --- vcdimager-0.7.12/frontends/xml/vcd_xml_master.c 2001-09-28 16:32:53.000000000 -0400 +++ vcdimager-hack/frontends/xml/vcd_xml_master.c 2002-12-13 17:18:24.000000000 -0500 @@ -80,6 +80,7 @@ } val_type; vcd_parm_t parm_id; } const _opt_cfg[] = { + { OPT_NICE_MPEG_FILE_NAMES, OPT_BOOL, VCD_PARM_NICE_MPEG_FILE_NAMES }, { OPT_SVCD_VCD3_MPEGAV, OPT_BOOL, VCD_PARM_SVCD_VCD3_MPEGAV }, { OPT_SVCD_VCD3_ENTRYSVD, OPT_BOOL, VCD_PARM_SVCD_VCD3_ENTRYSVD }, { OPT_SVCD_VCD3_TRACKSVD, OPT_BOOL, VCD_PARM_SVCD_VCD3_TRACKSVD }, @@ -242,7 +243,9 @@ sequence->id); vcd_obj_append_sequence_play_item (_vcd, _mpeg_src, - sequence->id, sequence->default_entry_id); + sequence->id, + sequence->file_name, + sequence->default_entry_id); _VCD_LIST_FOREACH (node2, sequence->entry_point_list) { diff -urP -x '*~' -x '*.1' vcdimager-0.7.12/frontends/xml/vcd_xml_parse.c vcdimager-hack/frontends/xml/vcd_xml_parse.c --- vcdimager-0.7.12/frontends/xml/vcd_xml_parse.c 2001-09-20 14:05:47.000000000 -0400 +++ vcdimager-hack/frontends/xml/vcd_xml_parse.c 2002-12-14 04:25:58.000000000 -0500 @@ -519,6 +519,8 @@ GET_PROP_STR (sequence->id, "id", doc, node, ns); GET_PROP_STR (sequence->src, "src", doc, node, ns); + GET_PROP_STR (sequence->file_name, "fname", doc, node, ns); + sequence->entry_point_list = _vcd_list_new (); sequence->autopause_list = _vcd_list_new (); diff -urP -x '*~' -x '*.1' vcdimager-0.7.12/frontends/xml/videocd.dtd vcdimager-hack/frontends/xml/videocd.dtd --- vcdimager-0.7.12/frontends/xml/videocd.dtd 2001-08-29 09:21:50.000000000 -0400 +++ vcdimager-hack/frontends/xml/videocd.dtd 2002-12-14 04:24:52.000000000 -0500 @@ -1,5 +1,5 @@ @@ -85,6 +85,7 @@ diff -urP -x '*~' -x '*.1' vcdimager-0.7.12/libvcd/vcd.c vcdimager-hack/libvcd/vcd.c --- vcdimager-0.7.12/libvcd/vcd.c 2002-01-03 21:50:05.000000000 -0500 +++ vcdimager-hack/libvcd/vcd.c 2002-12-23 11:16:03.000000000 -0500 @@ -410,6 +410,7 @@ int vcd_obj_append_sequence_play_item (VcdObj *obj, VcdMpegSource *mpeg_source, const char item_id[], + const char file_name[], const char default_entry_id[]) { unsigned length; @@ -448,6 +449,9 @@ if (item_id) sequence->id = strdup (item_id); + if (file_name) + sequence->file_name = strdup (file_name); + if (default_entry_id) sequence->default_entry_id = strdup (default_entry_id); @@ -883,6 +887,11 @@ vcd_debug ("changing 'next volume use sequence 2' to %d", obj->info_use_seq2); break; + case VCD_PARM_NICE_MPEG_FILE_NAMES: + obj->nice_mpeg_file_names = arg ? true: false; + vcd_debug ("changing 'nice mpeg file names' to %d", obj->nice_mpeg_file_names); + break; + case VCD_PARM_SVCD_VCD3_MPEGAV: if (obj->type == VCD_TYPE_SVCD) { @@ -1180,6 +1189,8 @@ _vcd_directory_mkdir (obj->dir, "EXT"); /* _vcd_directory_mkdir (obj->dir, "KARAOKE"); */ _vcd_directory_mkdir (obj->dir, "MPEGAV"); + /*if (obj->nice_mpeg_file_names) + _vcd_directory_mkdir (obj->dir, "MPEG");*/ _vcd_directory_mkdir (obj->dir, "VCD"); /* add segment dir only when there are actually segment play items */ @@ -1339,6 +1350,8 @@ { char avseq_pathname[128] = { 0, }; const char *fmt = NULL; + const char *dir2 = NULL; + char *fmt2 = NULL; mpeg_sequence_t *_sequence = _vcd_list_node_data (node); uint32_t extent = _sequence->relative_start_extent; uint8_t file_num = 0; @@ -1356,6 +1369,25 @@ case VCD_TYPE_VCD2: fmt = "MPEGAV/AVSEQ%2.2d.DAT"; file_num = n + 1; + if (obj->nice_mpeg_file_names) + { + dir2 = "MPEG/"; + if (_sequence->file_name) + { + fmt2 = _vcd_strdup_upper (_sequence->file_name); + if (!_vcd_iso_pathname_valid_p (fmt2)) + { + vcd_error("Mpeg filename `%s' is not a valid iso file", + fmt2); + free(fmt2); + fmt2 = NULL; + } + } + else + { + fmt2 = strdup("AVSEQ%2.2d.MPG"); + } + } break; case VCD_TYPE_SVCD: case VCD_TYPE_HQVCD: @@ -1385,6 +1417,25 @@ + obj->track_rear_margin) * ISO_BLOCKSIZE, true, file_num); + if (fmt2) + { + /* For VCD Create nice .MPG file */ + + strcpy(avseq_pathname, dir2); + snprintf (avseq_pathname + strlen(dir2), sizeof (avseq_pathname), + fmt2, n + 1); + + /* file entry contains front margin, mpeg stream and rear margin */ + _vcd_directory_mkfile (obj->dir, avseq_pathname, extent, + (obj->track_front_margin + + _sequence->info->packets + + obj->track_rear_margin) * ISO_BLOCKSIZE, + true, 0); + + free(fmt2); + + } + n++; } diff -urP -x '*~' -x '*.1' vcdimager-0.7.12/libvcd/vcd.h vcdimager-hack/libvcd/vcd.h --- vcdimager-0.7.12/libvcd/vcd.h 2001-09-28 16:32:53.000000000 -0400 +++ vcdimager-hack/libvcd/vcd.h 2002-12-13 17:20:52.000000000 -0500 @@ -63,6 +63,7 @@ VCD_PARM_NEXT_VOL_SEQ2, /* bool */ VCD_PARM_APPLICATION_ID, /* char * max length 128 */ VCD_PARM_SEC_TYPE, /* unsigned [2336, 2352] */ + VCD_PARM_NICE_MPEG_FILE_NAMES,/* bool */ VCD_PARM_SVCD_VCD3_MPEGAV, /* bool */ VCD_PARM_SVCD_VCD3_ENTRYSVD, /* bool */ VCD_PARM_SVCD_VCD3_TRACKSVD, /* bool */ @@ -100,6 +101,7 @@ int vcd_obj_append_sequence_play_item (VcdObj *obj, VcdMpegSource *mpeg_source, const char item_id[], + const char file_name[], const char default_entry_id[]); int diff -urP -x '*~' -x '*.1' vcdimager-0.7.12/libvcd/vcd_obj.h vcdimager-hack/libvcd/vcd_obj.h --- vcdimager-0.7.12/libvcd/vcd_obj.h 2001-09-28 16:32:53.000000000 -0400 +++ vcdimager-hack/libvcd/vcd_obj.h 2002-12-13 17:26:55.000000000 -0500 @@ -43,6 +43,12 @@ typedef struct { VcdMpegSource *source; char *id; + + /* file name to use for "special" mpeg/ file */ + /* FIXME: memory leak, I can't figure out where to free the string + kevina@gnu.org */ + char *file_name; + const struct vcd_mpeg_stream_info *info; VcdList *pause_list; /* pause_t */ @@ -92,6 +98,8 @@ struct _VcdObj { vcd_type_t type; + bool nice_mpeg_file_names; + /* VCD 3.0 chinese SVCD compat flags */ bool svcd_vcd3_mpegav; bool svcd_vcd3_entrysvd; @@ -135,6 +143,9 @@ unsigned psd_size; unsigned psdx_size; + /* flag to enable "special" mpeg/ files */ + bool enable_mpeg_files; + /* custom files */ unsigned ext_file_start_extent; unsigned custom_file_start_extent; Only in vcdimager-0.7.12/: vcdimager.spec