Hi,

On Tue, Jan 3, 2017 at 12:16 PM, Matthieu Beghin <
matthieu.beg...@garagecube.com> wrote:

>
> > On 03 Jan 2017, at 17:55, Ronald S. Bultje <rsbul...@gmail.com> wrote:
> >
> > Hi,
> >
> > On Tue, Jan 3, 2017 at 11:44 AM, Matthieu Beghin <
> > matthieu.beg...@garagecube.com> wrote:
> >
> >>> I'm assuming that you're talking about 8K H264 with pixfmt=yuv420p10?
> 8K
> >> yuv420p10 frames are 100MB
> >>
> >> Correct
> >>
> >>> 32 plus delayed output and current_pic gives H264_MAX_PICTURE_COUNT =
> 36
> >> without threading: 36*100=3.6GB.
> >>
> >> What do you mean by "delayed output” ? Can you link me to a document ?
> >
> >
> > Out-of-order coded P-frames, they are buffered internally but not counted
> > (and thus extra) on top of the max_refs value. I believe the spec calls
> > this dpb (delayed pic buffer).
> >
> >> Or maybe consider ditching 32bit support?
> >>
> >> Unfortunately, that’s 10 years old app using OSX Carbon library (not 64
> >> bits), and rewriting that part would be too much work.
> >>
> >
> > I'm frowning at you. Really badly.
> >
> > As an alternative, is there a way to know how much bytes are buffered ?
> >> Iterating buffered frames ?
> >
> >
> > What are you hoping to accomplish by knowing how many bytes are buffered?
> > It doesn't solve the problem? But anyway, check
> > H264Context->short/long_ref[]; delayed_pic[] gives you the delayed
> output.
> >
>
> I’m trying to let people use 8k movies if it will fit, but in case it
> would use more than 1 GB, refuse to load the file. My application is a live
> application, it cannot crash, and actually, it can...
>
> So to know how much bytes livavcodec is using, I have to know the number
> of frames / field, if it is interlaced and the number of delayed frames,
> that's correct ?
>
> How can I know the number of frames / field ?
> To know if it’s interlaced: AVFrame::interlaced_frame
> Number of delayed frames ?
>
> Another solution is to start playing the movie and to check the buffered
> data amount each time I decode a frame, then stop the movie if it uses more
> than 1 GB...
> In this case, just iterating H264Context->short/long_ref[]; delayed_pic[]
> would be enough ?
> How can I get the H264Context ?


You can't access H264Context outside libavcodec without hacks...

Does something in libavcodec crash if you use too much mem? (If so: what?
We want to fix this...) Or something else?

The idea is that on OOM, libavcodec mallocs fail and we return gracefully.
If that doesn't happen, we want to fix it.

Ronald
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel

Reply via email to