Support for S_TEXT/UTF8 subtitles (which are also the default now). Reordered the help output and the mkvmerge man page a bit.

This commit is contained in:
Moritz Bunkus 2003-04-24 20:36:45 +00:00
parent 2b2cf6f9ed
commit 70f007c39f
5 changed files with 43 additions and 13 deletions

View File

@ -13,7 +13,7 @@
/*!
\file
\version \$Id: matroska.h,v 1.6 2003/04/23 08:16:39 mosu Exp $
\version \$Id: matroska.h,v 1.7 2003/04/24 20:36:45 mosu Exp $
\brief Definitions for the various Codec IDs
\author Moritz Bunkus <moritz @ bunkus.org>
*/
@ -32,5 +32,6 @@
#define MKV_V_MSCOMP "V_MS/VFW/FOURCC"
#define MKV_S_TEXTASCII "S_TEXT/ASCII"
#define MKV_S_TEXTUTF8 "S_TEXT/UTF8"
#endif // __MATROSKA_H

View File

@ -73,9 +73,6 @@ linear drifts. \fIp\fR defaults to 1000 if omitted. Both \fIo\fR and
Defaults: no manual synch correction (which is the same as \fId\fR = 0 and
\fIo\fR/\fIp\fR = 1.0).
.TP
\fB\-f\fR, \fB\-\-fourcc\fR <\fIFourCC\fR>
Forces the FourCC to the specified value. Works only for video tracks.
.TP
\fB\-\-cues\fR <\fInone\fR|\fIiframes\fR|\fIall\fR>
Controls for which tracks cue (index) entries are created. \fInone\fR inhibits
the creation of cue entries for all tracks contained in the following
@ -94,6 +91,20 @@ not explicitly select a track himself then the player should prefer the
track that has his 'default' flag set. Only one track of each kind (audio,
video, subttiles) can have his 'default' flag set.
.LP
Options that only apply to video tracks:
.TP
\fB\-f\fR, \fB\-\-fourcc\fR <\fIFourCC\fR>
Forces the FourCC to the specified value. Works only for video tracks.
.LP
Options that only apply to text subtitle tracks:
.TP
\fB\-\-no\-utf8\-subs\fR
With this option text subtitles will not be recoded, and the track's
CodecId will be set to S_TEXT/ASCII. Without this option the text subtitles
will be converted to UTF\-8, and the track's CodecId will be set to
S_TEXT/UTF8. \fBmkvmerge\fR uses the value of \fILC_CTYPE\fR as the source
charset or ISO\-8859\-15 if \fILC_CTYPE\fR is not set.
.LP
Other options:
.TP
\fB\-l\fR, \fB\-\-list\-types\fR

View File

@ -13,7 +13,7 @@
/*!
\file
\version \$Id: mkvmerge.cpp,v 1.44 2003/04/23 14:38:53 mosu Exp $
\version \$Id: mkvmerge.cpp,v 1.45 2003/04/24 20:36:45 mosu Exp $
\brief command line parameter parsing, looping, output handling
\author Moritz Bunkus <moritz @ bunkus.org>
*/
@ -30,6 +30,7 @@
#endif
#include <iostream>
#include <string>
#ifdef LIBEBML_GCC2
#include <typeinfo>
@ -51,6 +52,7 @@
#include "KaxCues.h"
#include "KaxInfo.h"
#include "KaxInfoData.h"
#include "KaxVersion.h"
#include "mkvmerge.h"
#include "cluster_helper.h"
@ -71,6 +73,7 @@
#endif
using namespace LIBMATROSKA_NAMESPACE;
using namespace std;
typedef struct {
char *ext;
@ -170,13 +173,16 @@ static void usage(void) {
" linear drifts. p defaults to 1000 if\n"
" omitted. Both o and p can be floating point\n"
" numbers.\n"
" -f, --fourcc <FOURCC> Forces the FourCC to the specified value.\n"
" Works only for video tracks.\n"
" --default-track Sets the 'default' flag for this track.\n"
" --cues <none|iframes| Create cue (index) entries for this track:\n"
" all> None at all, only for I frames, for all.\n"
"\n"
" Other options:\n"
"\n Options that only apply to video tracks:\n"
" -f, --fourcc <FOURCC> Forces the FourCC to the specified value.\n"
" Works only for video tracks.\n"
"\n Options that only apply to text subtitle tracks:\n"
" --no-utf8-subs Outputs text subtitles unmodified and do not\n"
" convert the text to UTF-8.\n"
"\n\n Other options:\n"
" -l, --list-types Lists supported input file types.\n"
" -h, --help Show this help.\n"
" -V, --version Show version information.\n"
@ -597,6 +603,8 @@ static void parse_args(int argc, char **argv) {
i++;
} else if (!strcmp(argv[i], "--default-track"))
ti.default_track = 1;
else if (!strcmp(argv[i], "--no-utf8-subs"))
ti.no_utf8_subs = 1;
// The argument is an input file.
else {

View File

@ -13,7 +13,7 @@
/*!
\file
\version \$Id: p_textsubs.cpp,v 1.8 2003/04/21 08:29:50 mosu Exp $
\version \$Id: p_textsubs.cpp,v 1.9 2003/04/24 20:36:45 mosu Exp $
\brief Subripper subtitle reader
\author Moritz Bunkus <moritz @ bunkus.org>
*/
@ -46,7 +46,10 @@ void textsubs_packetizer_c::set_header() {
set_serial(-1);
set_track_type(track_subtitle);
set_codec_id(MKV_S_TEXTASCII);
if (ti->no_utf8_subs)
set_codec_id(MKV_S_TEXTASCII);
else
set_codec_id(MKV_S_TEXTUTF8);
if (ti->default_track)
set_as_default_track('s');
@ -117,7 +120,13 @@ int textsubs_packetizer_c::process(unsigned char *_subs, int, int64_t start,
}
*idx2 = 0;
add_packet((unsigned char *)subs, strlen(subs), start, -1, -1, length);
if (!ti->no_utf8_subs) {
char *utf8_subs = to_utf8(subs);
add_packet((unsigned char *)utf8_subs, strlen(utf8_subs), start, -1, -1,
length);
free(utf8_subs);
} else
add_packet((unsigned char *)subs, strlen(subs), start, -1, -1, length);
free(subs);

View File

@ -13,7 +13,7 @@
/*!
\file
\version \$Id: pr_generic.h,v 1.26 2003/04/21 08:29:50 mosu Exp $
\version \$Id: pr_generic.h,v 1.27 2003/04/24 20:36:45 mosu Exp $
\brief class definition for the generic reader and packetizer
\author Moritz Bunkus <moritz @ bunkus.org>
*/
@ -49,6 +49,7 @@ typedef struct {
// Options used by the packetizers.
unsigned char *private_data;
int private_size;
int no_utf8_subs;
char fourcc[5];