本文整理汇总了C++中Codec::name方法的典型用法代码示例。如果您正苦于以下问题:C++ Codec::name方法的具体用法?C++ Codec::name怎么用?C++ Codec::name使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Codec
的用法示例。
在下文中一共展示了Codec::name方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: parse
void ContentType::parse( const EString &s )
{
EmailParser p( s );
p.whitespace();
while ( p.present( ":" ) )
p.whitespace();
bool mustGuess = false;
if ( p.atEnd() ) {
t = "text";
st = "plain";
}
else {
uint x = p.mark();
if ( p.nextChar() == '/' )
mustGuess = true;
else
t = p.mimeToken().lower();
if ( p.atEnd() ) {
if ( s == "text" ) {
t = "text"; // elm? mailtool? someone does this, anyway.
st = "plain";
}
// the remainder is from RFC 1049
else if ( s == "postscript" ) {
t = "application";
st = "postscript";
}
else if ( s == "postscript" ) {
t = "application";
st = "postscript";
}
else if ( s == "sgml" ) {
t = "text";
st = "sgml";
}
else if ( s == "tex" ) {
t = "application";
st = "x-tex";
}
else if ( s == "troff" ) {
t = "application";
st = "x-troff";
}
else if ( s == "dvi" ) {
t = "application";
st = "x-dvi";
}
else if ( s.startsWith( "x-" ) ) {
st = "x-rfc1049-" + s;
t = "application";
}
else {
// scribe and undefined types
setError( "Invalid Content-Type: " + s.quoted() );
}
}
else {
if ( p.nextChar() == '/' ) {
p.step();
if ( !p.atEnd() || p.nextChar() != ';' )
st = p.mimeToken().lower();
if ( st.isEmpty() )
mustGuess = true;
}
else if ( p.nextChar() == '=' ) {
// oh no. someone skipped the content-type and
// supplied only some parameters. we'll assume it's
// text/plain and parse the parameters.
t = "text";
st = "plain";
p.restore( x );
mustGuess = true;
}
else {
addParameter( "original-type", t + "/" + st );
t = "application";
st = "octet-stream";
mustGuess = true;
}
parseParameters( &p );
}
}
if ( mustGuess ) {
EString fn = parameter( "name" );
if ( fn.isEmpty() )
fn = parameter( "filename" );
while ( fn.endsWith( "." ) )
fn.truncate( fn.length() - 1 );
fn = fn.lower();
if ( fn.endsWith( "jpg" ) || fn.endsWith( "jpeg" ) ) {
t = "image";
st = "jpeg";
}
else if ( fn.endsWith( "htm" ) || fn.endsWith( "html" ) ) {
t = "text";
st = "html";
}
//.........这里部分代码省略.........
示例2: if
Bodypart * Bodypart::parseBodypart( uint start, uint end,
const EString & rfc2822,
Header * h, Multipart * parent )
{
if ( rfc2822[start] == 13 )
start++;
if ( rfc2822[start] == 10 )
start++;
Bodypart * bp = new Bodypart;
bp->setParent( parent );
bp->setHeader( h );
EString body;
if ( end > start )
body = rfc2822.mid( start, end-start );
if ( !body.contains( '=' ) ) {
// sometimes people send c-t-e: q-p _and_ c-t-e: 7bit or 8bit.
// if they are equivalent we can accept it.
uint i = 0;
bool any = false;
HeaderField * f = 0;
while ( (f=h->field(HeaderField::ContentTransferEncoding,i)) != 0 ) {
if ( ((ContentTransferEncoding*)f)->encoding() == EString::QP )
any = true;
i++;
}
if ( any && i > 1 )
h->removeField( HeaderField::ContentTransferEncoding );
}
EString::Encoding e = EString::Binary;
ContentTransferEncoding * cte = h->contentTransferEncoding();
if ( cte )
e = cte->encoding();
if ( !body.isEmpty() ) {
if ( e == EString::Base64 || e == EString::Uuencode )
body = body.decoded( e );
else
body = body.crlf().decoded( e );
}
ContentType * ct = h->contentType();
if ( !ct ) {
switch ( h->defaultType() ) {
case Header::TextPlain:
h->add( "Content-Type", "text/plain" );
break;
case Header::MessageRfc822:
h->add( "Content-Type", "message/rfc822" );
break;
}
ct = h->contentType();
}
if ( ct->type() == "text" ) {
bool specified = false;
bool unknown = false;
Codec * c = 0;
if ( ct ) {
EString csn = ct->parameter( "charset" );
if ( csn.lower() == "default" )
csn = "";
if ( !csn.isEmpty() )
specified = true;
c = Codec::byName( csn );
if ( !c )
unknown = true;
if ( c && c->name().lower() == "us-ascii" ) {
// Some MTAs appear to say this in case there is no
// Content-Type field - without checking whether the
// body actually is ASCII. If it isn't, we'd better
// call our charset guesser.
(void)c->toUnicode( body );
if ( !c->valid() )
specified = false;
// Not pretty.
}
}
if ( !c )
c = new AsciiCodec;
bp->d->hasText = true;
bp->d->text = c->toUnicode( body.crlf() );
if ( c->name() == "GB2312" || c->name() == "ISO-2022-JP" ||
c->name() == "KS_C_5601-1987" ) {
// undefined code point usage in GB2312 spam is much too
// common. (GB2312 spam is much too common, but that's
// another matter.) Gb2312Codec turns all undefined code
// points into U+FFFD, so here, we can take the unicode
// form and say it's the canonical form. when a client
// later reads the message, it gets the text in unicode,
// including U+FFFD.
bool bad = !c->valid();
// the header may contain some unencoded gb2312. we bang
// it by hand, ignoring errors.
//.........这里部分代码省略.........
示例3: main
int main(int argc, char **argv)
{
if (argc < 3)
return 1;
av::init();
av::setFFmpegLoggingLevel(AV_LOG_TRACE);
string uri (argv[1]);
string out (argv[2]);
ssize_t audioStream = -1;
AudioDecoderContext adec;
Stream ast;
error_code ec;
int count = 0;
{
//
// INPUT
//
FormatContext ictx;
ictx.openInput(uri, ec);
if (ec) {
cerr << "Can't open input\n";
return 1;
}
ictx.findStreamInfo();
for (size_t i = 0; i < ictx.streamsCount(); ++i) {
auto st = ictx.stream(i);
if (st.isAudio()) {
audioStream = i;
ast = st;
break;
}
}
cerr << audioStream << endl;
if (ast.isNull()) {
cerr << "Audio stream not found\n";
return 1;
}
if (ast.isValid()) {
adec = AudioDecoderContext(ast);
//Codec codec = findDecodingCodec(adec.raw()->codec_id);
//adec.setCodec(codec);
//adec.setRefCountedFrames(true);
adec.open(ec);
if (ec) {
cerr << "Can't open codec\n";
return 1;
}
}
//
// OUTPUT
//
OutputFormat ofmt;
FormatContext octx;
ofmt = av::guessOutputFormat(out, out);
clog << "Output format: " << ofmt.name() << " / " << ofmt.longName() << '\n';
octx.setFormat(ofmt);
Codec ocodec = av::findEncodingCodec(ofmt, false);
Stream ost = octx.addStream(ocodec);
AudioEncoderContext enc (ost);
clog << ocodec.name() << " / " << ocodec.longName() << ", audio: " << (ocodec.type()==AVMEDIA_TYPE_AUDIO) << '\n';
auto sampleFmts = ocodec.supportedSampleFormats();
auto sampleRates = ocodec.supportedSamplerates();
auto layouts = ocodec.supportedChannelLayouts();
clog << "Supported sample formats:\n";
for (const auto &fmt : sampleFmts) {
clog << " " << av_get_sample_fmt_name(fmt) << '\n';
}
clog << "Supported sample rates:\n";
for (const auto &rate : sampleRates) {
clog << " " << rate << '\n';
}
clog << "Supported sample layouts:\n";
for (const auto &lay : layouts) {
char buf[128] = {0};
av_get_channel_layout_string(buf,
sizeof(buf),
//.........这里部分代码省略.........
示例4: tag
static Codec * guessHtmlCodec( const EString & body )
{
// Let's see if the general function has something for us.
Codec * guess = guessTextCodec( body );
// HTML prescribes that 8859-1 is the default. Let's see if 8859-1
// works.
if ( !guess ) {
guess = new Iso88591Codec;
(void)guess->toUnicode( body );
if ( !guess->valid() )
guess = 0;
}
if ( !guess ||
( !guess->wellformed() &&
( guess->name() == "ISO-8859-1" ||
guess->name() == "ISO-8859-15" ) ) ) {
// Some people believe that Windows codepage 1252 is
// ISO-8859-1. Let's see if that works.
Codec * windoze = new Cp1252Codec;
(void)windoze->toUnicode( body );
if ( windoze->wellformed() )
guess = windoze;
}
// Some user-agents add a <meta http-equiv="content-type"> instead
// of the Content-Type field. Maybe that exists? And if it exists,
// is it more likely to be correct than our guess above?
EString b = body.lower().simplified();
int i = 0;
while ( i >= 0 ) {
EString tag( "<meta http-equiv=\"content-type\" content=\"" );
i = b.find( tag, i );
if ( i >= 0 ) {
i = i + tag.length();
int j = i;
while ( j < (int)b.length() && b[j] != '"' )
j++;
HeaderField * hf
= HeaderField::create( "Content-Type",
b.mid( i, j-i ) );
EString cs = ((MimeField*)hf)->parameter( "charset" );
Codec * meta = 0;
if ( !cs.isEmpty() )
meta = Codec::byName( cs );
UString m;
if ( meta )
m = meta->toUnicode( body );
UString g;
if ( guess )
g = guess->toUnicode( body );
if ( meta &&
( ( !m.isEmpty() && m == g ) ||
( meta->wellformed() &&
( !guess || !guess->wellformed() ) ) ||
( meta->valid() && !guess ) ||
( meta->valid() && guess &&
guess->name() == "ISO-8859-1" ) ||
( meta->valid() && guess && !guess->valid() ) ) &&
meta->toUnicode( b ).ascii().contains( tag ) ) {
guess = meta;
}
}
}
return guess;
}