当前位置: 首页>>代码示例>>C++>>正文


C++ AVCodecParser::parser_init方法代码示例

本文整理汇总了C++中AVCodecParser::parser_init方法的典型用法代码示例。如果您正苦于以下问题:C++ AVCodecParser::parser_init方法的具体用法?C++ AVCodecParser::parser_init怎么用?C++ AVCodecParser::parser_init使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在AVCodecParser的用法示例。


在下文中一共展示了AVCodecParser::parser_init方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: LogStr

AVCodecParserContext *av_parser_init( int codec_id )
{
    LogStr("Init");

    AVCodecParserContext *s;
    AVCodecParser *parser;
    int ret;

    if (codec_id == CODEC_ID_NONE)
    {
        LogStr("Exit");
        return NULL;
    }

    for (parser = av_first_parser; parser != NULL; parser = parser->next)
    {
        if (parser->codec_ids[0] == codec_id || parser->codec_ids[1] == codec_id || parser->codec_ids[2] == codec_id || parser->codec_ids[3] == codec_id || parser->codec_ids[4] == codec_id)
        {
            goto found;
        }
    }

    LogStr("Exit");
    return NULL;

    found: s = av_mallocz(sizeof(AVCodecParserContext));
    if (!s)
    {
        LogStr("Exit");
        return NULL;
    }

    s->parser = parser;
    s->priv_data = av_mallocz(parser->priv_data_size);
    if (!s->priv_data)
    {
        av_free(s);
        LogStr("Exit");
        return NULL;
    }

    if (parser->parser_init)
    {
        ret = parser->parser_init(s);
        if (ret != 0)
        {
            av_free(s->priv_data);
            av_free(s);
            LogStr("Exit");
            return NULL;
        }
    }
    s->fetch_timestamp = 1;
    s->pict_type = FF_I_TYPE;

    LogStr("Exit");
    return s;
}
开发者ID:apakian,项目名称:rtmp-cpp,代码行数:58,代码来源:parser.c

示例2:

AVCodecParserContext *av_parser_init(int codec_id)
{
    AVCodecParserContext *s = NULL;
    AVCodecParser *parser;
    int ret;

    if (codec_id == AV_CODEC_ID_NONE)
        return NULL;

    for (parser = av_first_parser; parser; parser = parser->next) {
        if (parser->codec_ids[0] == codec_id ||
            parser->codec_ids[1] == codec_id ||
            parser->codec_ids[2] == codec_id ||
            parser->codec_ids[3] == codec_id ||
            parser->codec_ids[4] == codec_id)
            goto found;
    }
    return NULL;

found:
    s = av_mallocz(sizeof(AVCodecParserContext));
    if (!s)
        goto err_out;
    s->parser = parser;
    s->priv_data = av_mallocz(parser->priv_data_size);
    if (!s->priv_data)
        goto err_out;
    s->fetch_timestamp=1;
    s->pict_type = AV_PICTURE_TYPE_I;
    if (parser->parser_init) {
        ret = parser->parser_init(s);
        if (ret != 0)
            goto err_out;
    }
    s->key_frame            = -1;
#if FF_API_CONVERGENCE_DURATION
FF_DISABLE_DEPRECATION_WARNINGS
    s->convergence_duration = 0;
FF_ENABLE_DEPRECATION_WARNINGS
#endif
    s->dts_sync_point       = INT_MIN;
    s->dts_ref_dts_delta    = INT_MIN;
    s->pts_dts_delta        = INT_MIN;
    s->format               = -1;

    return s;

err_out:
    if (s)
        av_freep(&s->priv_data);
    av_free(s);
    return NULL;
}
开发者ID:AndreDing,项目名称:FFmpeg,代码行数:53,代码来源:parser.c

示例3:

AVCodecParserContext *av_parser_init(int codec_id)
{
    AVCodecParserContext *s;
    AVCodecParser *parser;
    int ret;

    if (codec_id == AV_CODEC_ID_NONE)
        return NULL;

    for (parser = av_first_parser; parser != NULL; parser = parser->next) {
        if (parser->codec_ids[0] == codec_id ||
            parser->codec_ids[1] == codec_id ||
            parser->codec_ids[2] == codec_id ||
            parser->codec_ids[3] == codec_id ||
            parser->codec_ids[4] == codec_id)
            goto found;
    }
    return NULL;

found:
    s = av_mallocz(sizeof(AVCodecParserContext));
    if (!s)
        return NULL;
    s->parser = parser;
    if (parser->priv_data_size) {
        s->priv_data = av_mallocz(parser->priv_data_size);
        if (!s->priv_data) {
            av_free(s);
            return NULL;
        }
    }
    if (parser->parser_init) {
        ret = parser->parser_init(s);
        if (ret != 0) {
            av_free(s->priv_data);
            av_free(s);
            return NULL;
        }
    }
    s->fetch_timestamp      = 1;
    s->pict_type            = AV_PICTURE_TYPE_I;
    s->key_frame            = -1;
    s->convergence_duration = 0;
    s->dts_sync_point       = INT_MIN;
    s->dts_ref_dts_delta    = INT_MIN;
    s->pts_dts_delta        = INT_MIN;
    s->format               = -1;

    return s;
}
开发者ID:OS2World,项目名称:LIB-libav,代码行数:50,代码来源:parser.c


注:本文中的AVCodecParser::parser_init方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。