>From: [email protected]
>To: [email protected]
>Date: Sun, 21 Jun 2015 13:57:30 +0300
>Subject: [Libav-user] avformat_open_input error with custom IO
>
>I am trying to implement a custom IO read, where I have some jpeg frames 
>coming as byte array and I have to decode them for >later processing.>For now 
>my function just read the first two successive frames, then the call to 
>avformat_open_input return -1094995529

>uint8_t* buffer = NULL, * avioCxt_buffer = NULL;>              buffer_data 
>bd;>                int ret = 0;>>          bd.ptr = (uint8_t *) pJPEGFrame;>  
>             bd.size = len;>>                // allocate the context data 
>structure>         if ( (*outputFormatCxt = avformat_alloc_context() ) == 
>NULL)>           {>                      fprintf(stderr, 
>"convert_JPEG_Frame_TO_AVFrame @line(%d) - failed to allocate memory for 
>context", __LINE__);>                  return -1;>             }>>             
>if ( (avioCxt_buffer = (uint8_t *) av_malloc(len)) == NULL)>            {>     
>                 fprintf(stderr, "convert_JPEG_Frame_TO_AVFrame @line(%d) - 
>failed to allocate memory", __LINE__);>                      
>avformat_close_input(outputFormatCxt);>                 return -1;>            
> }>>             if ( (*pAvIOCxt = avio_alloc_context(avioCxt_buffer, len, 0, 
>&bd, read_packet, NULL, NULL)) == NULL)>           {>                      
>fprintf(stderr, "convert_JPEG_Frame_TO_AVFrame @line(%d) - failed to allocate 
>memory", __LINE__);>                      return -1;>             }>>          
>   (*outputFormatCxt)->pb = *pAvIOCxt;>            if ( (ret = 
>avformat_open_input(outputFormatCxt, NULL, NULL, NULL)) < 0)>               {> 
>                     fprintf(stderr, "convert_JPEG_Frame_TO_AVFrame @line(%d) 
>- failed to allocate memory", __LINE__);>                      return -1;>     
>        }>>I am following the avio_read example using the same read callback 
>function for the avio context.>>Thanks in advance.

I tried to make a turn around after reading the source code of the library - I 
am working on windows, I can't do much debuging.I found that the problem is in 
the probe this function av_probe_input_formatthe return score for the first two 
frames is correct its "jpeg_pipe"but for the other frames it return probe_score 
= 1
so I made my turnaround by associating the iformat field of the AVFormatContext 
using this code - I am guaranteed to have only jpeg files.
AVInputFormat * iformat = av_find_input_format("jpeg_pipe");            if 
(!iformat) return -1;                (*outputFormatCxt)->iformat = iformat;
And it worked fine!
I don't really understand the problem, nor I do understand what might be the 
consequences of that turn around.

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

Reply via email to