⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 utils.c

📁 tcpmp播放器的flv插件
💻 C
📖 第 1 页 / 共 4 页
字号:
{"ibias", NULL, OFFSET(intra_quant_bias), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX, V|E},{"pbias", NULL, OFFSET(inter_quant_bias), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX, V|E},{"color_table_id", NULL, OFFSET(color_table_id), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX},{"internal_buffer_count", NULL, OFFSET(internal_buffer_count), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX},{"global_quality", NULL, OFFSET(global_quality), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX},{"coder", NULL, OFFSET(coder_type), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX, V|E, "coder"},{"vlc", NULL, 0, FF_OPT_TYPE_CONST, FF_CODER_TYPE_VLC, INT_MIN, INT_MAX, V|E, "coder"},{"ac", NULL, 0, FF_OPT_TYPE_CONST, FF_CODER_TYPE_AC, INT_MIN, INT_MAX, V|E, "coder"},{"context_model", NULL, OFFSET(context_model), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX, V|E},{"slice_flags", NULL, OFFSET(slice_flags), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX},{"xvmc_acceleration", NULL, OFFSET(xvmc_acceleration), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX},{"mbd", NULL, OFFSET(mb_decision), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX, V|E, "mbd"},{"simple", NULL, 0, FF_OPT_TYPE_CONST, FF_MB_DECISION_SIMPLE, INT_MIN, INT_MAX, V|E, "mbd"},{"bits", NULL, 0, FF_OPT_TYPE_CONST, FF_MB_DECISION_BITS, INT_MIN, INT_MAX, V|E, "mbd"},{"rd", NULL, 0, FF_OPT_TYPE_CONST, FF_MB_DECISION_RD, INT_MIN, INT_MAX, V|E, "mbd"},{"stream_codec_tag", NULL, OFFSET(stream_codec_tag), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX},{"sc_threshold", NULL, OFFSET(scenechange_threshold), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX, V|E},{"lmin", "min lagrange factor", OFFSET(lmin), FF_OPT_TYPE_INT,  2*FF_QP2LAMBDA, 0, INT_MAX, V|E},{"lmax", "max lagrange factor", OFFSET(lmax), FF_OPT_TYPE_INT, 31*FF_QP2LAMBDA, 0, INT_MAX, V|E},{"noise_reduction", NULL, OFFSET(noise_reduction), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX, V|E},{"rc_init_occupancy", NULL, OFFSET(rc_initial_buffer_occupancy), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX, V|E},{"inter_threshold", NULL, OFFSET(inter_threshold), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX, V|E},{"flags2", NULL, OFFSET(flags2), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX},{"error_rate", NULL, OFFSET(error_rate), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX},{"antialias", NULL, OFFSET(antialias_algo), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX, V|D, "aa"},{"auto", NULL, 0, FF_OPT_TYPE_CONST, FF_AA_AUTO, INT_MIN, INT_MAX, V|D, "aa"},{"fastint", NULL, 0, FF_OPT_TYPE_CONST, FF_AA_FASTINT, INT_MIN, INT_MAX, V|D, "aa"},{"int", NULL, 0, FF_OPT_TYPE_CONST, FF_AA_INT, INT_MIN, INT_MAX, V|D, "aa"},{"float", NULL, 0, FF_OPT_TYPE_CONST, FF_AA_FLOAT, INT_MIN, INT_MAX, V|D, "aa"},{"qns", NULL, OFFSET(quantizer_noise_shaping), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX, V|E},{"thread_count", NULL, OFFSET(thread_count), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX, V|E|D},{"me_threshold", "motion estimaton threshold", OFFSET(me_threshold), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX},{"mb_threshold", NULL, OFFSET(mb_threshold), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX},{"dc", NULL, OFFSET(intra_dc_precision), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX, V|E},{"nsse_weight", NULL, OFFSET(nsse_weight), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX, V|E},{"skip_top", NULL, OFFSET(skip_top), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX, V|D},{"skip_bottom", NULL, OFFSET(skip_bottom), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX, V|D},{"profile", NULL, OFFSET(profile), FF_OPT_TYPE_INT, FF_PROFILE_UNKNOWN, INT_MIN, INT_MAX, V|A|E, "profile"},{"unknown", NULL, 0, FF_OPT_TYPE_CONST, FF_PROFILE_UNKNOWN, INT_MIN, INT_MAX, V|A|E, "profile"},{"level", NULL, OFFSET(level), FF_OPT_TYPE_INT, FF_LEVEL_UNKNOWN, INT_MIN, INT_MAX, V|A|E, "level"},{"unknown", NULL, 0, FF_OPT_TYPE_CONST, FF_LEVEL_UNKNOWN, INT_MIN, INT_MAX, V|A|E, "level"},{"lowres", NULL, OFFSET(lowres), FF_OPT_TYPE_INT, 0, 0, INT_MAX, V|D},{"frame_skip_threshold", NULL, OFFSET(frame_skip_threshold), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX, V|E},{"frame_skip_factor", NULL, OFFSET(frame_skip_factor), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX, V|E},{"frame_skip_exp", NULL, OFFSET(frame_skip_exp), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX, V|E},{"skipcmp", "frame skip comapare function", OFFSET(frame_skip_cmp), FF_OPT_TYPE_INT, FF_CMP_DCTMAX, INT_MIN, INT_MAX, V|E, "cmp_func"},{"border_mask", NULL, OFFSET(border_masking), FF_OPT_TYPE_FLOAT, DEFAULT, FLT_MIN, FLT_MAX, V|E},{"mb_lmin", NULL, OFFSET(mb_lmin), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX, V|E},{"mb_lmax", NULL, OFFSET(mb_lmax), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX, V|E},{"me_penalty_compensation", NULL, OFFSET(me_penalty_compensation), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX, V|E},{NULL},};#undef A#undef Vstatic AVClass av_codec_context_class = { "AVCodecContext", context_to_name, options };void avcodec_get_context_defaults(AVCodecContext *s){    memset(s, 0, sizeof(AVCodecContext));    s->av_class= &av_codec_context_class;    s->bit_rate= 800*1000;    s->bit_rate_tolerance= s->bit_rate*10;    s->qmin= 2;    s->qmax= 31;    s->mb_lmin= FF_QP2LAMBDA * 2;    s->mb_lmax= FF_QP2LAMBDA * 31;    s->rc_eq= "tex^qComp";    s->qcompress= 0.5;    s->max_qdiff= 3;    s->b_quant_factor=1.25;    s->b_quant_offset=1.25;    s->i_quant_factor=-0.8;    s->i_quant_offset=0.0;    s->error_concealment= 3;    s->error_resilience= 1;    s->workaround_bugs= FF_BUG_AUTODETECT;    s->time_base= _AVRational(0,1); //Picard
    s->gop_size= 50;    s->me_method= ME_EPZS;    s->get_buffer= avcodec_default_get_buffer;    s->release_buffer= avcodec_default_release_buffer;    s->get_format= avcodec_default_get_format;    s->execute= avcodec_default_execute;    s->thread_count=1;    s->me_subpel_quality=8;    s->lmin= FF_QP2LAMBDA * s->qmin;    s->lmax= FF_QP2LAMBDA * s->qmax;    s->sample_aspect_ratio= _AVRational(0,1); //Picard
    s->ildct_cmp= FF_CMP_VSAD;    s->profile= FF_PROFILE_UNKNOWN;    s->level= FF_LEVEL_UNKNOWN;    s->me_penalty_compensation= 256;    s->pix_fmt= PIX_FMT_NONE;    s->frame_skip_cmp= FF_CMP_DCTMAX;        s->intra_quant_bias= FF_DEFAULT_QUANT_BIAS;    s->inter_quant_bias= FF_DEFAULT_QUANT_BIAS;    s->palctrl = NULL;    s->reget_buffer= avcodec_default_reget_buffer;}/** * allocates a AVCodecContext and set it to defaults. * this can be deallocated by simply calling free()  */AVCodecContext *avcodec_alloc_context(void){    AVCodecContext *avctx= av_malloc(sizeof(AVCodecContext));        if(avctx==NULL) return NULL;        avcodec_get_context_defaults(avctx);        return avctx;}void avcodec_get_frame_defaults(AVFrame *pic){    memset(pic, 0, sizeof(AVFrame));    pic->pts= AV_NOPTS_VALUE;    pic->key_frame= 1;}/** * allocates a AVPFrame and set it to defaults. * this can be deallocated by simply calling free()  */AVFrame *avcodec_alloc_frame(void){    AVFrame *pic= av_malloc(sizeof(AVFrame));        if(pic==NULL) return NULL;        avcodec_get_frame_defaults(pic);        return pic;}int avcodec_open(AVCodecContext *avctx, AVCodec *codec){    int ret= -1;        entangled_thread_counter++;    if(entangled_thread_counter != 1){        av_log(avctx, AV_LOG_ERROR, "insufficient thread locking around avcodec_open/close()\n");        goto end;    }    if(avctx->codec)        goto end;    avctx->codec = codec;    avctx->codec_id = codec->id;    avctx->frame_number = 0;    if (codec->priv_data_size > 0) {        avctx->priv_data = av_mallocz(codec->priv_data_size);        if (!avctx->priv_data)             goto end;    } else {        avctx->priv_data = NULL;    }    if(avctx->coded_width && avctx->coded_height)        avcodec_set_dimensions(avctx, avctx->coded_width, avctx->coded_height);    else if(avctx->width && avctx->height)        avcodec_set_dimensions(avctx, avctx->width, avctx->height);    if((avctx->coded_width||avctx->coded_height) && avcodec_check_dimensions(avctx,avctx->coded_width,avctx->coded_height)){        av_freep(&avctx->priv_data);        goto end;    }    ret = avctx->codec->init(avctx);    if (ret < 0) {        av_freep(&avctx->priv_data);        goto end;    }    ret=0;end:    entangled_thread_counter--;    return ret;}int avcodec_encode_audio(AVCodecContext *avctx, uint8_t *buf, int buf_size,                          const short *samples){    if(buf_size < FF_MIN_BUFFER_SIZE && 0){        av_log(avctx, AV_LOG_ERROR, "buffer smaller then minimum size\n");        return -1;    }    if((avctx->codec->capabilities & CODEC_CAP_DELAY) || samples){        int ret = avctx->codec->encode(avctx, buf, buf_size, (void *)samples);        avctx->frame_number++;        return ret;    }else        return 0;}int avcodec_encode_video(AVCodecContext *avctx, uint8_t *buf, int buf_size,                          const AVFrame *pict){    if(buf_size < FF_MIN_BUFFER_SIZE){        av_log(avctx, AV_LOG_ERROR, "buffer smaller then minimum size\n");        return -1;    }    if(avcodec_check_dimensions(avctx,avctx->width,avctx->height))        return -1;    if((avctx->codec->capabilities & CODEC_CAP_DELAY) || pict){        int ret = avctx->codec->encode(avctx, buf, buf_size, (void *)pict);        avctx->frame_number++;        emms_c(); //needed to avoid an emms_c() call before every return;            return ret;    }else        return 0;}int avcodec_encode_subtitle(AVCodecContext *avctx, uint8_t *buf, int buf_size,                             const AVSubtitle *sub){    int ret;    ret = avctx->codec->encode(avctx, buf, buf_size, (void *)sub);    avctx->frame_number++;    return ret;}/**  * decode a frame.  * @param buf bitstream buffer, must be FF_INPUT_BUFFER_PADDING_SIZE larger then the actual read bytes * because some optimized bitstream readers read 32 or 64 bit at once and could read over the end * @param buf_size the size of the buffer in bytes * @param got_picture_ptr zero if no frame could be decompressed, Otherwise, it is non zero * @return -1 if error, otherwise return the number of * bytes used.  */int avcodec_decode_video(AVCodecContext *avctx, AVFrame *picture,                          int *got_picture_ptr,                         uint8_t *buf, int buf_size){    int ret;        *got_picture_ptr= 0;    if((avctx->coded_width||avctx->coded_height) && avcodec_check_dimensions(avctx,avctx->coded_width,avctx->coded_height))        return -1;    if((avctx->codec->capabilities & CODEC_CAP_DELAY) || buf_size){        ret = avctx->codec->decode(avctx, picture, got_picture_ptr,                                 buf, buf_size);        emms_c(); //needed to avoid an emms_c() call before every return;            if (*got_picture_ptr)                                       avctx->frame_number++;    }else        ret= 0;    return ret;}/* decode an audio frame. return -1 if error, otherwise return the   *number of bytes used. If no frame could be decompressed,   *frame_size_ptr is zero. Otherwise, it is the decompressed frame   *size in BYTES. */int avcodec_decode_audio(AVCodecContext *avctx, int16_t *samples,                          int *frame_size_ptr,                         uint8_t *buf, int buf_size){    int ret;    *frame_size_ptr= 0;    if((avctx->codec->capabilities & CODEC_CAP_DELAY) || buf_size){        ret = avctx->codec->decode(avctx, samples, frame_size_ptr,                                 buf, buf_size);        avctx->frame_number++;    }else        ret= 0;    return ret;}/* decode a subtitle message. return -1 if error, otherwise return the   *number of bytes used. If no subtitle could be decompressed,   *got_sub_ptr is zero. Otherwise, the subtitle is stored in *sub. */int avcodec_decode_subtitle(AVCodecContext *avctx, AVSubtitle *sub,                            int *got_sub_ptr,                            const uint8_t *buf, int buf_size){    int ret;    *got_sub_ptr = 0;    ret = avctx->codec->decode(avctx, sub, got_sub_ptr,                                (uint8_t *)buf, buf_size);    if (*got_sub_ptr)        avctx->frame_number++;    return ret;}int avcodec_close(AVCodecContext *avctx){    entangled_thread_counter++;    if(entangled_thread_counter != 1){        av_log(avctx, AV_LOG_ERROR, "insufficient thread locking around avcodec_open/close()\n");        entangled_thread_counter--;        return -1;    }    if (avctx->codec->close)        avctx->codec->close(avctx);    avcodec_default_free_buffers(avctx);    av_freep(&avctx->priv_data);    avctx->codec = NULL;    entangled_thread_counter--;    return 0;}AVCodec *avcodec_find_encoder(enum CodecID id){    AVCodec *p;    p = first_avcodec;    while (p) {        if (p->encode != NULL && p->id == id)            return p;        p = p->next;    }    return NULL;}AVCodec *avcodec_find_encoder_by_name(const char *name){    AVCodec *p;    p = first_avcodec;    while (p) {

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -