[Libav-user] How to clear real-time buffer?
Roger Pack
rogerdpack2 at gmail.com
Tue Mar 31 07:37:40 EEST 2020
Oh yeah you can just read frames from it and silently discard them to
"empty it" ... maybe?
On Sat, Mar 28, 2020 at 12:55 PM salsaman <salsaman at gmail.com> wrote:
>
> Maybe something like this ?
>
> for (int i = 0; i < input_context->nb_streams; i++) {
> AVStream *s = input_context->streams[i];
> AVCodecContext *cc = s->codec;
> avcodec_flush_buffers(cc);
> }
>
>
>
> http://lives-video.com
> https://www.openhub.net/accounts/salsaman
>
>
> On Fri, Mar 27, 2020 at 1:08 AM Roger Pack <rogerdpack2 at gmail.com> wrote:
>>
>> You'd probably have to drill into dshow.c and maybe add a method to it?
>>
>> On Thu, Nov 29, 2018 at 6:16 AM DDD ZZZ <mymail67-at-mail.ru at ffmpeg.org> wrote:
>> >
>> > Hi everybody!
>> > Here's the part of c++ code that I'm using to access my webcam.
>> >
>> > **********************************************************************
>> > **********************************************************************
>> >
>> > int Camera::Init(char* file_name,
>> > char* device_name,
>> > char* format,
>> > char* resolution,
>> > char* frame_rate,
>> > char* pixel_format)
>> > {
>> > av_log(NULL, AV_LOG_INFO, "---INIT STARTED---\n");
>> > avdevice_register_all();
>> > av_register_all();
>> >
>> > AVDictionary* properties_collection = NULL;
>> > av_dict_set(&properties_collection, "f", format, NULL);
>> > av_dict_set(&properties_collection, "video_size", resolution, NULL);
>> > av_dict_set(&properties_collection, "framerate", frame_rate, NULL);
>> > av_dict_set(&properties_collection, "pix_fmt", pixel_format, NULL);
>> > AVInputFormat *input_format = av_find_input_format("dshow");
>> > char command_line[256];
>> > sprintf(command_line, "video=%s", device_name);
>> > AVFormatContext *input_context = avformat_alloc_context();
>> > //input_context->flags |= AVFMT_FLAG_NOBUFFER; //DOESN'T HELP
>> > //input_context->max_picture_buffer = 0; //ERR
>> >
>> > int err_code = 0;
>> > err_code = avformat_open_input(&input_context,
>> > command_line,
>> > input_format,
>> > &properties_collection);
>> >
>> > //////////////////////////////////////
>> > //////////PROBLEM SECTION/////////////
>> > //////////////////////////////////////
>> > int i = 0;
>> > while (i++ < 30)
>> > {
>> > Sleep(1000);
>> > //avformat_flush(input_context); //DOESN'T HELP
>> > //av_free(input_context); //ERR
>> > }
>> > //////////////////////////////////////
>> > system("pause");
>> > return 0;
>> > }
>> >
>> > **********************************************************************
>> > **********************************************************************
>> >
>> > Right after "avformat_open_input()" it starts reading frames to some internal buffer without me even calling "av_read_frame()". After about 10 seconds it start's giving me error messages:
>> >
>> > [dshow @ 0014ed40] real-time buffer [VirtualBox Webcam - FULL HD 1080P Webcam] [video input]
>> > too full or near too full (62% of size: 3041280 [rtbufsize parameter])!
>> > frame dropped!
>> > ...
>> > ...
>> > ...
>> > [dshow @ 0014ed40] real-time buffer [VirtualBox Webcam - FULL HD 1080P Webcam] [video input]
>> > too full or near too full (100% of size: 3041280 [rtbufsize parameter])!
>> > frame dropped!
>> >
>> >
>> > Q: How to clear this buffer or avoid using it?
>> >
>> > Thanks in advance.
>> >
>> >
>> >
>> > P.S.Please pardon my english.
>> >
>> > P.P.S.Have a good day.
>> >
>> >
>> > _______________________________________________
>> > Libav-user mailing list
>> > Libav-user at ffmpeg.org
>> > http://ffmpeg.org/mailman/listinfo/libav-user
>> >
>> > To unsubscribe, visit link above, or email
>> > libav-user-request at ffmpeg.org with subject "unsubscribe".
>> _______________________________________________
>> Libav-user mailing list
>> Libav-user at ffmpeg.org
>> https://ffmpeg.org/mailman/listinfo/libav-user
>>
>> To unsubscribe, visit link above, or email
>> libav-user-request at ffmpeg.org with subject "unsubscribe".
>
> _______________________________________________
> Libav-user mailing list
> Libav-user at ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/libav-user
>
> To unsubscribe, visit link above, or email
> libav-user-request at ffmpeg.org with subject "unsubscribe".
More information about the Libav-user
mailing list