X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavformat%2Favio_internal.h;h=5493163221a2dc7300671870057383b18092e7c9;hb=c3386bd5b4d3662f94e902a0fe3e9e869e29967d;hp=6630aaf61d44d8916dda5b5483978a042166a4ab;hpb=ff1ec0c3f8fce10e92010f82f7e859e08f9c742a;p=ffmpeg diff --git a/libavformat/avio_internal.h b/libavformat/avio_internal.h index 6630aaf61d4..5493163221a 100644 --- a/libavformat/avio_internal.h +++ b/libavformat/avio_internal.h @@ -23,6 +23,10 @@ #include "avio.h" #include "url.h" +#include "libavutil/log.h" + +extern const AVClass ffio_url_class; + int ffio_init_context(AVIOContext *s, unsigned char *buffer, int buffer_size, @@ -33,6 +37,23 @@ int ffio_init_context(AVIOContext *s, int64_t (*seek)(void *opaque, int64_t offset, int whence)); +/** + * Read size bytes from AVIOContext, returning a pointer. + * Note that the data pointed at by the returned pointer is only + * valid until the next call that references the same IO context. + * @param s IO context + * @param buf pointer to buffer into which to assemble the requested + * data if it is not available in contiguous addresses in the + * underlying buffer + * @param size number of bytes requested + * @param data address at which to store pointer: this will be a + * a direct pointer into the underlying buffer if the requested + * number of bytes are available at contiguous addresses, otherwise + * will be a copy of buf + * @return number of bytes read or AVERROR + */ +int ffio_read_indirect(AVIOContext *s, unsigned char *buf, int size, const unsigned char **data); + /** * Read size bytes from AVIOContext into buf. * This reads at most 1 packet. If that is not enough fewer bytes will be @@ -77,7 +98,7 @@ unsigned long ff_crc04C11DB7_update(unsigned long checksum, const uint8_t *buf, /** * Open a write only packetized memory stream with a maximum packet * size of 'max_packet_size'. The stream is stored in a memory buffer - * with a big endian 4 byte header giving the packet size in bytes. + * with a big-endian 4 byte header giving the packet size in bytes. * * @param s new IO context * @param max_packet_size maximum packet size (must be > 0) @@ -98,4 +119,4 @@ int ffio_open_dyn_packet_buf(AVIOContext **s, int max_packet_size); */ int ffio_fdopen(AVIOContext **s, URLContext *h); -#endif // AVFORMAT_AVIO_INTERNAL_H +#endif /* AVFORMAT_AVIO_INTERNAL_H */