Jérôme SALAYET <jerome.salayet@...> writes:

> I someone can tell me if I use the better ones to decode H264 :
>  
> m_lpCodecCtx->skip_frame       =  AVDISCARD_NONREF;
> m_lpCodecCtx->skip_loop_filter =  AVDISCARD_ALL;

Do you know what these two are doing?
I consider them extremely useful but if 
you don't know what they exactly do, it 
is very bad to set them.

> m_lpCodecCtx->skip_idct        =  AVDISCARD_ALL;
> m_lpCodecCtx->idct_algo        =  1;

I suspect they have no effect on H264 decoding, 
generally I don't think you would use them if 
they would work.

> m_lpCodecCtx->has_b_frames     =  0;
> m_lpCodecCtx->refs             =  1;

Documentation says "decoding: Set by libavcodec", 
so you should definitely not set them.

> av_opt_set(m_lpCodecCtx->priv_data, "preset", "ultrafast", 0);
> av_opt_set(m_lpCodecCtx->priv_data, "tune", "zerolatency", 0);

I may absolutely miss something, but these look like 
encoding parameters.

> I also set the codec flags like this :
>  
> if(m_lpCodec->capabilities&CODEC_CAP_TRUNCATED) 

>  m_lpCodecCtx->flags|= CODEC_FLAG_TRUNCATED;

I would expect that this has a performance hit, 
only use it if you know why.

> // Enable faster H264 decode.

> m_lpCodec->capabilities |= CODEC_CAP_FRAME_THREADS;

I don't think you can set codec capabilities.

> m_lpCodecCtx->flags     |= CODEC_FLAG_LOW_DELAY;

(I am not convinced you should always set this 
flag, but I probably don't know enough to really 
say this.)

> m_lpCodecCtx->flags2    |= CODEC_FLAG2_FAST;

This is the only dangerous flag, it means:
"I know that my input is 100% error free, I 
don't mind if libavcodec crashes on invalid 
input."
(Depending on your use-case this may or may 
not be what you want, note that the performance 
impact is very, very small, so you probably 
don't want it.)

Carl Eugen

_______________________________________________
Libav-user mailing list
[email protected]
http://ffmpeg.org/mailman/listinfo/libav-user

Reply via email to