libavcodec/mpegvideo_enc.c:964: error: Null Dereference
  pointer `c` last assigned on line 947 could be null and is dereferenced at line 964, column 5.

libavcodec/mpegvideo_enc.c:945:1: start of procedure estimate_best_b_count()
943. }
944. 
945. static int estimate_best_b_count(MpegEncContext *s){
     ^
946.     AVCodec *codec= avcodec_find_encoder(s->avctx->codec_id);
947.     AVCodecContext *c= avcodec_alloc_context();

libavcodec/mpegvideo_enc.c:946:5: Skipping avcodec_find_encoder(): empty list of specs
944. 
945. static int estimate_best_b_count(MpegEncContext *s){
946.     AVCodec *codec= avcodec_find_encoder(s->avctx->codec_id);
         ^
947.     AVCodecContext *c= avcodec_alloc_context();
948.     AVFrame input[FF_MAX_B_FRAMES+2];

libavcodec/mpegvideo_enc.c:947:5: 
945. static int estimate_best_b_count(MpegEncContext *s){
946.     AVCodec *codec= avcodec_find_encoder(s->avctx->codec_id);
947.     AVCodecContext *c= avcodec_alloc_context();
         ^
948.     AVFrame input[FF_MAX_B_FRAMES+2];
949.     const int scale= s->avctx->brd_scale;

libavcodec/options.c:463:1: start of procedure avcodec_alloc_context()
  461. }
  462. 
  463. AVCodecContext *avcodec_alloc_context(void){
       ^
  464.     return avcodec_alloc_context2(CODEC_TYPE_UNKNOWN);
  465. }

libavcodec/options.c:464:5: 
  462. 
  463. AVCodecContext *avcodec_alloc_context(void){
  464.     return avcodec_alloc_context2(CODEC_TYPE_UNKNOWN);
           ^
  465. }
  466. 

libavcodec/options.c:449:1: start of procedure avcodec_alloc_context2()
    447. }
    448. 
    449. AVCodecContext *avcodec_alloc_context2(enum CodecType codec_type){
         ^
    450.     AVCodecContext *avctx= av_malloc(sizeof(AVCodecContext));
    451. 

libavcodec/options.c:450:5: 
    448. 
    449. AVCodecContext *avcodec_alloc_context2(enum CodecType codec_type){
    450.     AVCodecContext *avctx= av_malloc(sizeof(AVCodecContext));
             ^
    451. 
    452.     if(avctx==NULL) return NULL;

libavutil/mem.c:64:1: start of procedure av_malloc()
      62.    linker will do it automatically. */
      63. 
      64. void *av_malloc(unsigned int size)
          ^
      65. {
      66.     void *ptr = NULL;

libavutil/mem.c:66:5: 
      64. void *av_malloc(unsigned int size)
      65. {
      66.     void *ptr = NULL;
              ^
      67. #if CONFIG_MEMALIGN_HACK
      68.     long diff;

libavutil/mem.c:72:8: Taking false branch
      70. 
      71.     /* let's disallow possible ambiguous cases */
      72.     if(size > (INT_MAX-16) )
                 ^
      73.         return NULL;
      74. 

libavutil/mem.c:83:9: Taking false branch
      81.     ((char*)ptr)[-1]= diff;
      82. #elif HAVE_POSIX_MEMALIGN
      83.     if (posix_memalign(&ptr,16,size))
                  ^
      84.         ptr = NULL;
      85. #elif HAVE_MEMALIGN

libavutil/mem.c:116:5: 
      114.     ptr = malloc(size);
      115. #endif
      116.     return ptr;
               ^
      117. }
      118. 

libavutil/mem.c:117:1: return from a call to av_malloc
      115. #endif
      116.     return ptr;
      117. }
           ^
      118. 
      119. void *av_realloc(void *ptr, unsigned int size)

libavcodec/options.c:452:8: Taking true branch
    450.     AVCodecContext *avctx= av_malloc(sizeof(AVCodecContext));
    451. 
    452.     if(avctx==NULL) return NULL;
                ^
    453. 
    454.     avcodec_get_context_defaults2(avctx, codec_type);

libavcodec/options.c:452:21: 
    450.     AVCodecContext *avctx= av_malloc(sizeof(AVCodecContext));
    451. 
    452.     if(avctx==NULL) return NULL;
                             ^
    453. 
    454.     avcodec_get_context_defaults2(avctx, codec_type);

libavcodec/options.c:457:1: return from a call to avcodec_alloc_context2
    455. 
    456.     return avctx;
    457. }
         ^
    458. 
    459. void avcodec_get_context_defaults(AVCodecContext *s){

libavcodec/options.c:465:1: return from a call to avcodec_alloc_context
  463. AVCodecContext *avcodec_alloc_context(void){
  464.     return avcodec_alloc_context2(CODEC_TYPE_UNKNOWN);
  465. }
       ^
  466. 

libavcodec/mpegvideo_enc.c:949:5: 
947.     AVCodecContext *c= avcodec_alloc_context();
948.     AVFrame input[FF_MAX_B_FRAMES+2];
949.     const int scale= s->avctx->brd_scale;
         ^
950.     int i, j, out_size, p_lambda, b_lambda, lambda2;
951.     int outbuf_size= s->width * s->height; //FIXME

libavcodec/mpegvideo_enc.c:951:5: 
949.     const int scale= s->avctx->brd_scale;
950.     int i, j, out_size, p_lambda, b_lambda, lambda2;
951.     int outbuf_size= s->width * s->height; //FIXME
         ^
952.     uint8_t *outbuf= av_malloc(outbuf_size);
953.     int64_t best_rd= INT64_MAX;

libavcodec/mpegvideo_enc.c:952:5: 
950.     int i, j, out_size, p_lambda, b_lambda, lambda2;
951.     int outbuf_size= s->width * s->height; //FIXME
952.     uint8_t *outbuf= av_malloc(outbuf_size);
         ^
953.     int64_t best_rd= INT64_MAX;
954.     int best_b_count= -1;

libavutil/mem.c:64:1: start of procedure av_malloc()
  62.    linker will do it automatically. */
  63. 
  64. void *av_malloc(unsigned int size)
      ^
  65. {
  66.     void *ptr = NULL;

libavutil/mem.c:66:5: 
  64. void *av_malloc(unsigned int size)
  65. {
  66.     void *ptr = NULL;
          ^
  67. #if CONFIG_MEMALIGN_HACK
  68.     long diff;

libavutil/mem.c:72:8: Taking false branch
  70. 
  71.     /* let's disallow possible ambiguous cases */
  72.     if(size > (INT_MAX-16) )
             ^
  73.         return NULL;
  74. 

libavutil/mem.c:83:9: Taking false branch
  81.     ((char*)ptr)[-1]= diff;
  82. #elif HAVE_POSIX_MEMALIGN
  83.     if (posix_memalign(&ptr,16,size))
              ^
  84.         ptr = NULL;
  85. #elif HAVE_MEMALIGN

libavutil/mem.c:116:5: 
  114.     ptr = malloc(size);
  115. #endif
  116.     return ptr;
           ^
  117. }
  118. 

libavutil/mem.c:117:1: return from a call to av_malloc
  115. #endif
  116.     return ptr;
  117. }
       ^
  118. 
  119. void *av_realloc(void *ptr, unsigned int size)

libavcodec/mpegvideo_enc.c:953:5: 
951.     int outbuf_size= s->width * s->height; //FIXME
952.     uint8_t *outbuf= av_malloc(outbuf_size);
953.     int64_t best_rd= INT64_MAX;
         ^
954.     int best_b_count= -1;
955. 

libavcodec/mpegvideo_enc.c:954:5: 
952.     uint8_t *outbuf= av_malloc(outbuf_size);
953.     int64_t best_rd= INT64_MAX;
954.     int best_b_count= -1;
         ^
955. 
956.     assert(scale>=0 && scale <=3);

libavcodec/mpegvideo_enc.c:956:5: 
954.     int best_b_count= -1;
955. 
956.     assert(scale>=0 && scale <=3);
         ^
957. 
958. //    emms_c();

libavcodec/mpegvideo_enc.c:959:5: 
957. 
958. //    emms_c();
959.     p_lambda= s->last_lambda_for[FF_P_TYPE]; //s->next_picture_ptr->quality;
         ^
960.     b_lambda= s->last_lambda_for[FF_B_TYPE]; //p_lambda *FFABS(s->avctx->b_quant_factor) + s->avctx->b_quant_offset;
961.     if(!b_lambda) b_lambda= p_lambda; //FIXME we should do this somewhere else

libavcodec/mpegvideo_enc.c:960:5: 
958. //    emms_c();
959.     p_lambda= s->last_lambda_for[FF_P_TYPE]; //s->next_picture_ptr->quality;
960.     b_lambda= s->last_lambda_for[FF_B_TYPE]; //p_lambda *FFABS(s->avctx->b_quant_factor) + s->avctx->b_quant_offset;
         ^
961.     if(!b_lambda) b_lambda= p_lambda; //FIXME we should do this somewhere else
962.     lambda2= (b_lambda*b_lambda + (1<<FF_LAMBDA_SHIFT)/2 ) >> FF_LAMBDA_SHIFT;

libavcodec/mpegvideo_enc.c:961:9: Taking false branch
959.     p_lambda= s->last_lambda_for[FF_P_TYPE]; //s->next_picture_ptr->quality;
960.     b_lambda= s->last_lambda_for[FF_B_TYPE]; //p_lambda *FFABS(s->avctx->b_quant_factor) + s->avctx->b_quant_offset;
961.     if(!b_lambda) b_lambda= p_lambda; //FIXME we should do this somewhere else
             ^
962.     lambda2= (b_lambda*b_lambda + (1<<FF_LAMBDA_SHIFT)/2 ) >> FF_LAMBDA_SHIFT;
963. 

libavcodec/mpegvideo_enc.c:962:5: 
960.     b_lambda= s->last_lambda_for[FF_B_TYPE]; //p_lambda *FFABS(s->avctx->b_quant_factor) + s->avctx->b_quant_offset;
961.     if(!b_lambda) b_lambda= p_lambda; //FIXME we should do this somewhere else
962.     lambda2= (b_lambda*b_lambda + (1<<FF_LAMBDA_SHIFT)/2 ) >> FF_LAMBDA_SHIFT;
         ^
963. 
964.     c->width = s->width >> scale;

libavcodec/mpegvideo_enc.c:964:5: 
962.     lambda2= (b_lambda*b_lambda + (1<<FF_LAMBDA_SHIFT)/2 ) >> FF_LAMBDA_SHIFT;
963. 
964.     c->width = s->width >> scale;
         ^
965.     c->height= s->height>> scale;
966.     c->flags= CODEC_FLAG_QSCALE | CODEC_FLAG_PSNR | CODEC_FLAG_INPUT_PRESERVED /*| CODEC_FLAG_EMU_EDGE*/;

static int estimate_best_b_count(MpegEncContext *s){
    AVCodec *codec= avcodec_find_encoder(s->avctx->codec_id);
    AVCodecContext *c= avcodec_alloc_context();
    AVFrame input[FF_MAX_B_FRAMES+2];
    const int scale= s->avctx->brd_scale;
    int i, j, out_size, p_lambda, b_lambda, lambda2;
    int outbuf_size= s->width * s->height;
    uint8_t *outbuf= av_malloc(outbuf_size);
    int64_t best_rd= INT64_MAX;
    int best_b_count= -1;
    assert(scale>=0 && scale <=3);
    p_lambda= s->last_lambda_for[FF_P_TYPE];
    b_lambda= s->last_lambda_for[FF_B_TYPE];
    if(!b_lambda) b_lambda= p_lambda;
    lambda2= (b_lambda*b_lambda + (1<<FF_LAMBDA_SHIFT)/2 ) >> FF_LAMBDA_SHIFT;
    c->width = s->width >> scale;
    c->height= s->height>> scale;
    c->flags= CODEC_FLAG_QSCALE | CODEC_FLAG_PSNR | CODEC_FLAG_INPUT_PRESERVED  ;
    c->flags|= s->avctx->flags & CODEC_FLAG_QPEL;
    c->mb_decision= s->avctx->mb_decision;
    c->me_cmp= s->avctx->me_cmp;
    c->mb_cmp= s->avctx->mb_cmp;
    c->me_sub_cmp= s->avctx->me_sub_cmp;
    c->pix_fmt = PIX_FMT_YUV420P;
    c->time_base= s->avctx->time_base;
    c->max_b_frames= s->max_b_frames;
    if (avcodec_open(c, codec) < 0)
        return -1;
    for(i=0; i<s->max_b_frames+2; i++){
        int ysize= c->width*c->height;
        int csize= (c->width/2)*(c->height/2);
        Picture pre_input, *pre_input_ptr= i ? s->input_picture[i-1] : s->next_picture_ptr;
        avcodec_get_frame_defaults(&input[i]);
        input[i].data[0]= av_malloc(ysize + 2*csize);
        input[i].data[1]= input[i].data[0] + ysize;
        input[i].data[2]= input[i].data[1] + csize;
        input[i].linesize[0]= c->width;
        input[i].linesize[1]=
        input[i].linesize[2]= c->width/2;
        if(pre_input_ptr && (!i || s->input_picture[i-1])) {
            pre_input= *pre_input_ptr;
            if(pre_input.type != FF_BUFFER_TYPE_SHARED && i) {
                pre_input.data[0]+=INPLACE_OFFSET;
                pre_input.data[1]+=INPLACE_OFFSET;
                pre_input.data[2]+=INPLACE_OFFSET;
            }
            s->dsp.shrink[scale](input[i].data[0], input[i].linesize[0], pre_input.data[0], pre_input.linesize[0], c->width, c->height);
            s->dsp.shrink[scale](input[i].data[1], input[i].linesize[1], pre_input.data[1], pre_input.linesize[1], c->width>>1, c->height>>1);
            s->dsp.shrink[scale](input[i].data[2], input[i].linesize[2], pre_input.data[2], pre_input.linesize[2], c->width>>1, c->height>>1);
        }
    }
    for(j=0; j<s->max_b_frames+1; j++){
        int64_t rd=0;
        if(!s->input_picture[j])
            break;
        c->error[0]= c->error[1]= c->error[2]= 0;
        input[0].pict_type= FF_I_TYPE;
        input[0].quality= 1 * FF_QP2LAMBDA;
        out_size = avcodec_encode_video(c, outbuf, outbuf_size, &input[0]);
        for(i=0; i<s->max_b_frames+1; i++){
            int is_p= i % (j+1) == j || i==s->max_b_frames;
            input[i+1].pict_type= is_p ? FF_P_TYPE : FF_B_TYPE;
            input[i+1].quality= is_p ? p_lambda : b_lambda;
            out_size = avcodec_encode_video(c, outbuf, outbuf_size, &input[i+1]);
            rd += (out_size * lambda2) >> (FF_LAMBDA_SHIFT - 3);
        }
        while(out_size){
            out_size = avcodec_encode_video(c, outbuf, outbuf_size, NULL);
            rd += (out_size * lambda2) >> (FF_LAMBDA_SHIFT - 3);
        }
        rd += c->error[0] + c->error[1] + c->error[2];
        if(rd < best_rd){
            best_rd= rd;
            best_b_count= j;
        }
    }
    av_freep(&outbuf);
    avcodec_close(c);
    av_freep(&c);
    for(i=0; i<s->max_b_frames+2; i++){
        av_freep(&input[i].data[0]);
    }
    return best_b_count;
}
['static int estimate_best_b_count(MpegEncContext *s){\n    AVCodec *codec= avcodec_find_encoder(s->avctx->codec_id);\n    AVCodecContext *c= avcodec_alloc_context();\n    AVFrame input[FF_MAX_B_FRAMES+2];\n    const int scale= s->avctx->brd_scale;\n    int i, j, out_size, p_lambda, b_lambda, lambda2;\n    int outbuf_size= s->width * s->height;\n    uint8_t *outbuf= av_malloc(outbuf_size);\n    int64_t best_rd= INT64_MAX;\n    int best_b_count= -1;\n    assert(scale>=0 && scale <=3);\n    p_lambda= s->last_lambda_for[FF_P_TYPE];\n    b_lambda= s->last_lambda_for[FF_B_TYPE];\n    if(!b_lambda) b_lambda= p_lambda;\n    lambda2= (b_lambda*b_lambda + (1<<FF_LAMBDA_SHIFT)/2 ) >> FF_LAMBDA_SHIFT;\n    c->width = s->width >> scale;\n    c->height= s->height>> scale;\n    c->flags= CODEC_FLAG_QSCALE | CODEC_FLAG_PSNR | CODEC_FLAG_INPUT_PRESERVED  ;\n    c->flags|= s->avctx->flags & CODEC_FLAG_QPEL;\n    c->mb_decision= s->avctx->mb_decision;\n    c->me_cmp= s->avctx->me_cmp;\n    c->mb_cmp= s->avctx->mb_cmp;\n    c->me_sub_cmp= s->avctx->me_sub_cmp;\n    c->pix_fmt = PIX_FMT_YUV420P;\n    c->time_base= s->avctx->time_base;\n    c->max_b_frames= s->max_b_frames;\n    if (avcodec_open(c, codec) < 0)\n        return -1;\n    for(i=0; i<s->max_b_frames+2; i++){\n        int ysize= c->width*c->height;\n        int csize= (c->width/2)*(c->height/2);\n        Picture pre_input, *pre_input_ptr= i ? s->input_picture[i-1] : s->next_picture_ptr;\n        avcodec_get_frame_defaults(&input[i]);\n        input[i].data[0]= av_malloc(ysize + 2*csize);\n        input[i].data[1]= input[i].data[0] + ysize;\n        input[i].data[2]= input[i].data[1] + csize;\n        input[i].linesize[0]= c->width;\n        input[i].linesize[1]=\n        input[i].linesize[2]= c->width/2;\n        if(pre_input_ptr && (!i || s->input_picture[i-1])) {\n            pre_input= *pre_input_ptr;\n            if(pre_input.type != FF_BUFFER_TYPE_SHARED && i) {\n                pre_input.data[0]+=INPLACE_OFFSET;\n                pre_input.data[1]+=INPLACE_OFFSET;\n                pre_input.data[2]+=INPLACE_OFFSET;\n            }\n            s->dsp.shrink[scale](input[i].data[0], input[i].linesize[0], pre_input.data[0], pre_input.linesize[0], c->width, c->height);\n            s->dsp.shrink[scale](input[i].data[1], input[i].linesize[1], pre_input.data[1], pre_input.linesize[1], c->width>>1, c->height>>1);\n            s->dsp.shrink[scale](input[i].data[2], input[i].linesize[2], pre_input.data[2], pre_input.linesize[2], c->width>>1, c->height>>1);\n        }\n    }\n    for(j=0; j<s->max_b_frames+1; j++){\n        int64_t rd=0;\n        if(!s->input_picture[j])\n            break;\n        c->error[0]= c->error[1]= c->error[2]= 0;\n        input[0].pict_type= FF_I_TYPE;\n        input[0].quality= 1 * FF_QP2LAMBDA;\n        out_size = avcodec_encode_video(c, outbuf, outbuf_size, &input[0]);\n        for(i=0; i<s->max_b_frames+1; i++){\n            int is_p= i % (j+1) == j || i==s->max_b_frames;\n            input[i+1].pict_type= is_p ? FF_P_TYPE : FF_B_TYPE;\n            input[i+1].quality= is_p ? p_lambda : b_lambda;\n            out_size = avcodec_encode_video(c, outbuf, outbuf_size, &input[i+1]);\n            rd += (out_size * lambda2) >> (FF_LAMBDA_SHIFT - 3);\n        }\n        while(out_size){\n            out_size = avcodec_encode_video(c, outbuf, outbuf_size, NULL);\n            rd += (out_size * lambda2) >> (FF_LAMBDA_SHIFT - 3);\n        }\n        rd += c->error[0] + c->error[1] + c->error[2];\n        if(rd < best_rd){\n            best_rd= rd;\n            best_b_count= j;\n        }\n    }\n    av_freep(&outbuf);\n    avcodec_close(c);\n    av_freep(&c);\n    for(i=0; i<s->max_b_frames+2; i++){\n        av_freep(&input[i].data[0]);\n    }\n    return best_b_count;\n}', 'AVCodecContext *avcodec_alloc_context(void){\n    return avcodec_alloc_context2(CODEC_TYPE_UNKNOWN);\n}', 'AVCodecContext *avcodec_alloc_context2(enum CodecType codec_type){\n    AVCodecContext *avctx= av_malloc(sizeof(AVCodecContext));\n    if(avctx==NULL) return NULL;\n    avcodec_get_context_defaults2(avctx, codec_type);\n    return avctx;\n}', 'void *av_malloc(unsigned int size)\n{\n    void *ptr = NULL;\n#if CONFIG_MEMALIGN_HACK\n    long diff;\n#endif\n    if(size > (INT_MAX-16) )\n        return NULL;\n#if CONFIG_MEMALIGN_HACK\n    ptr = malloc(size+16);\n    if(!ptr)\n        return ptr;\n    diff= ((-(long)ptr - 1)&15) + 1;\n    ptr = (char*)ptr + diff;\n    ((char*)ptr)[-1]= diff;\n#elif HAVE_POSIX_MEMALIGN\n    if (posix_memalign(&ptr,16,size))\n        ptr = NULL;\n#elif HAVE_MEMALIGN\n    ptr = memalign(16,size);\n#else\n    ptr = malloc(size);\n#endif\n    return ptr;\n}']