@ -20,7 +20,10 @@
*/
*/
# include "libavutil/crc.h"
# include "libavutil/crc.h"
# include "libavutil/dict.h"
# include "libavutil/intreadwrite.h"
# include "libavutil/intreadwrite.h"
# include "libavutil/log.h"
# include "libavutil/opt.h"
# include "avformat.h"
# include "avformat.h"
# include "avio.h"
# include "avio.h"
# include "avio_internal.h"
# include "avio_internal.h"
@ -37,6 +40,31 @@
*/
*/
# define SHORT_SEEK_THRESHOLD 4096
# define SHORT_SEEK_THRESHOLD 4096
# if !FF_API_OLD_AVIO
static void * ffio_url_child_next ( void * obj , void * prev )
{
AVIOContext * s = obj ;
return prev ? NULL : s - > opaque ;
}
static const AVClass * ffio_url_child_class_next ( const AVClass * prev )
{
return prev ? NULL : & ffurl_context_class ;
}
static const AVOption ffio_url_options [ ] = {
{ NULL } ,
} ;
const AVClass ffio_url_class = {
. class_name = " AVIOContext " ,
. item_name = av_default_item_name ,
. version = LIBAVUTIL_VERSION_INT ,
. option = ffio_url_options ,
. child_next = ffio_url_child_next ,
. child_class_next = ffio_url_child_class_next ,
} ;
# endif
static void fill_buffer ( AVIOContext * s ) ;
static void fill_buffer ( AVIOContext * s ) ;
static int url_resetbuf ( AVIOContext * s , int flags ) ;
static int url_resetbuf ( AVIOContext * s , int flags ) ;
@ -856,6 +884,9 @@ int ffio_fdopen(AVIOContext **s, URLContext *h)
( * s ) - > read_pause = ( int ( * ) ( void * , int ) ) h - > prot - > url_read_pause ;
( * s ) - > read_pause = ( int ( * ) ( void * , int ) ) h - > prot - > url_read_pause ;
( * s ) - > read_seek = ( int64_t ( * ) ( void * , int , int64_t , int ) ) h - > prot - > url_read_seek ;
( * s ) - > read_seek = ( int64_t ( * ) ( void * , int , int64_t , int ) ) h - > prot - > url_read_seek ;
}
}
# if !FF_API_OLD_AVIO
( * s ) - > av_class = & ffio_url_class ;
# endif
return 0 ;
return 0 ;
}
}
@ -928,11 +959,17 @@ int ffio_rewind_with_probe_data(AVIOContext *s, unsigned char *buf, int buf_size
}
}
int avio_open ( AVIOContext * * s , const char * filename , int flags )
int avio_open ( AVIOContext * * s , const char * filename , int flags )
{
return avio_open2 ( s , filename , flags , NULL , NULL ) ;
}
int avio_open2 ( AVIOContext * * s , const char * filename , int flags ,
const AVIOInterruptCB * int_cb , AVDictionary * * options )
{
{
URLContext * h ;
URLContext * h ;
int err ;
int err ;
err = ffurl_open ( & h , filename , flags , NULL , NULL ) ;
err = ffurl_open ( & h , filename , flags , int_cb , options ) ;
if ( err < 0 )
if ( err < 0 )
return err ;
return err ;
err = ffio_fdopen ( s , h ) ;
err = ffio_fdopen ( s , h ) ;