| 
				
				
					
				
				
				 | 
			
			 | 
			@@ -844,41 +844,11 @@ static av_cold void common_init(H264Context *h){ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    memset(h->pps.scaling_matrix8, 16, 2*64*sizeof(uint8_t)); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			} | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			av_cold int ff_h264_decode_init(AVCodecContext *avctx){ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    H264Context *h= avctx->priv_data; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    MpegEncContext * const s = &h->s; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    MPV_decode_defaults(s); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    s->avctx = avctx; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    common_init(h); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    s->out_format = FMT_H264; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    s->workaround_bugs= avctx->workaround_bugs; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    // set defaults | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			//    s->decode_mb= ff_h263_decode_mb; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    s->quarter_sample = 1; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    if(!avctx->has_b_frames) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    s->low_delay= 1; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    avctx->chroma_sample_location = AVCHROMA_LOC_LEFT; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    ff_h264_decode_init_vlc(); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    h->thread_context[0] = h; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    h->outputed_poc = INT_MIN; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    h->prev_poc_msb= 1<<16; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    h->x264_build = -1; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    ff_h264_reset_sei(h); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    if(avctx->codec_id == CODEC_ID_H264){ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        if(avctx->ticks_per_frame == 1){ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            s->avctx->time_base.den *=2; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        avctx->ticks_per_frame = 2; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			int ff_h264_decode_extradata(H264Context *h) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			{ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    AVCodecContext *avctx = h->s.avctx; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    if(avctx->extradata_size > 0 && avctx->extradata && *(char *)avctx->extradata == 1){ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    if(*(char *)avctx->extradata == 1){ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        int i, cnt, nalsize; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        unsigned char *p = avctx->extradata; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
	
		
			
				| 
				
					
				
				
					
				
				
				 | 
			
			 | 
			@@ -916,9 +886,50 @@ av_cold int ff_h264_decode_init(AVCodecContext *avctx){ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        h->nal_length_size = ((*(((char*)(avctx->extradata))+4))&0x03)+1; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    } else { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        h->is_avc = 0; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        if(decode_nal_units(h, s->avctx->extradata, s->avctx->extradata_size) < 0) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        if(decode_nal_units(h, avctx->extradata, avctx->extradata_size) < 0) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            return -1; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    return 0; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			} | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			av_cold int ff_h264_decode_init(AVCodecContext *avctx){ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    H264Context *h= avctx->priv_data; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    MpegEncContext * const s = &h->s; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    MPV_decode_defaults(s); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    s->avctx = avctx; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    common_init(h); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    s->out_format = FMT_H264; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    s->workaround_bugs= avctx->workaround_bugs; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    // set defaults | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			//    s->decode_mb= ff_h263_decode_mb; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    s->quarter_sample = 1; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    if(!avctx->has_b_frames) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    s->low_delay= 1; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    avctx->chroma_sample_location = AVCHROMA_LOC_LEFT; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    ff_h264_decode_init_vlc(); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    h->thread_context[0] = h; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    h->outputed_poc = INT_MIN; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    h->prev_poc_msb= 1<<16; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    h->x264_build = -1; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    ff_h264_reset_sei(h); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    if(avctx->codec_id == CODEC_ID_H264){ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        if(avctx->ticks_per_frame == 1){ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            s->avctx->time_base.den *=2; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        avctx->ticks_per_frame = 2; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    if(avctx->extradata_size > 0 && avctx->extradata && | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        ff_h264_decode_extradata(h)) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        return -1; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    if(h->sps.bitstream_restriction_flag && s->avctx->has_b_frames < h->sps.num_reorder_frames){ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        s->avctx->has_b_frames = h->sps.num_reorder_frames; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        s->low_delay = 0; | 
		
		
	
	
		
			
				| 
				
					
				
				
				
				 | 
			
			 | 
			
  |