mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
avio: make url_seek() internal.
This commit is contained in:
parent
230a468679
commit
58a48c6511
@ -143,10 +143,10 @@ int ffurl_connect(URLContext* uc)
|
|||||||
if (err)
|
if (err)
|
||||||
return err;
|
return err;
|
||||||
uc->is_connected = 1;
|
uc->is_connected = 1;
|
||||||
//We must be careful here as url_seek() could be slow, for example for http
|
//We must be careful here as ffurl_seek() could be slow, for example for http
|
||||||
if( (uc->flags & (URL_WRONLY | URL_RDWR))
|
if( (uc->flags & (URL_WRONLY | URL_RDWR))
|
||||||
|| !strcmp(uc->prot->name, "file"))
|
|| !strcmp(uc->prot->name, "file"))
|
||||||
if(!uc->is_streamed && url_seek(uc, 0, SEEK_SET) < 0)
|
if(!uc->is_streamed && ffurl_seek(uc, 0, SEEK_SET) < 0)
|
||||||
uc->is_streamed= 1;
|
uc->is_streamed= 1;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -192,6 +192,10 @@ int url_write(URLContext *h, const unsigned char *buf, int size)
|
|||||||
{
|
{
|
||||||
return ffurl_write(h, buf, size);
|
return ffurl_write(h, buf, size);
|
||||||
}
|
}
|
||||||
|
int64_t url_seek(URLContext *h, int64_t pos, int whence)
|
||||||
|
{
|
||||||
|
return ffurl_seek(h, pos, whence);
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define URL_SCHEME_CHARS \
|
#define URL_SCHEME_CHARS \
|
||||||
@ -295,7 +299,7 @@ int ffurl_write(URLContext *h, const unsigned char *buf, int size)
|
|||||||
return retry_transfer_wrapper(h, buf, size, size, h->prot->url_write);
|
return retry_transfer_wrapper(h, buf, size, size, h->prot->url_write);
|
||||||
}
|
}
|
||||||
|
|
||||||
int64_t url_seek(URLContext *h, int64_t pos, int whence)
|
int64_t ffurl_seek(URLContext *h, int64_t pos, int whence)
|
||||||
{
|
{
|
||||||
int64_t ret;
|
int64_t ret;
|
||||||
|
|
||||||
@ -334,13 +338,13 @@ int64_t url_filesize(URLContext *h)
|
|||||||
{
|
{
|
||||||
int64_t pos, size;
|
int64_t pos, size;
|
||||||
|
|
||||||
size= url_seek(h, 0, AVSEEK_SIZE);
|
size= ffurl_seek(h, 0, AVSEEK_SIZE);
|
||||||
if(size<0){
|
if(size<0){
|
||||||
pos = url_seek(h, 0, SEEK_CUR);
|
pos = ffurl_seek(h, 0, SEEK_CUR);
|
||||||
if ((size = url_seek(h, -1, SEEK_END)) < 0)
|
if ((size = ffurl_seek(h, -1, SEEK_END)) < 0)
|
||||||
return size;
|
return size;
|
||||||
size++;
|
size++;
|
||||||
url_seek(h, pos, SEEK_SET);
|
ffurl_seek(h, pos, SEEK_SET);
|
||||||
}
|
}
|
||||||
return size;
|
return size;
|
||||||
}
|
}
|
||||||
|
@ -108,24 +108,9 @@ attribute_deprecated int url_open(URLContext **h, const char *url, int flags);
|
|||||||
attribute_deprecated int url_read(URLContext *h, unsigned char *buf, int size);
|
attribute_deprecated int url_read(URLContext *h, unsigned char *buf, int size);
|
||||||
attribute_deprecated int url_read_complete(URLContext *h, unsigned char *buf, int size);
|
attribute_deprecated int url_read_complete(URLContext *h, unsigned char *buf, int size);
|
||||||
attribute_deprecated int url_write(URLContext *h, const unsigned char *buf, int size);
|
attribute_deprecated int url_write(URLContext *h, const unsigned char *buf, int size);
|
||||||
|
attribute_deprecated int64_t url_seek(URLContext *h, int64_t pos, int whence);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
|
||||||
* Change the position that will be used by the next read/write
|
|
||||||
* operation on the resource accessed by h.
|
|
||||||
*
|
|
||||||
* @param pos specifies the new position to set
|
|
||||||
* @param whence specifies how pos should be interpreted, it must be
|
|
||||||
* one of SEEK_SET (seek from the beginning), SEEK_CUR (seek from the
|
|
||||||
* current position), SEEK_END (seek from the end), or AVSEEK_SIZE
|
|
||||||
* (return the filesize of the requested resource, pos is ignored).
|
|
||||||
* @return a negative value corresponding to an AVERROR code in case
|
|
||||||
* of failure, or the resulting file position, measured in bytes from
|
|
||||||
* the beginning of the file. You can use this feature together with
|
|
||||||
* SEEK_CUR to read the current file position.
|
|
||||||
*/
|
|
||||||
int64_t url_seek(URLContext *h, int64_t pos, int whence);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Close the resource accessed by the URLContext h, and free the
|
* Close the resource accessed by the URLContext h, and free the
|
||||||
* memory used by it.
|
* memory used by it.
|
||||||
|
@ -846,7 +846,7 @@ int ffio_fdopen(AVIOContext **s, URLContext *h)
|
|||||||
|
|
||||||
if (ffio_init_context(*s, buffer, buffer_size,
|
if (ffio_init_context(*s, buffer, buffer_size,
|
||||||
(h->flags & URL_WRONLY || h->flags & URL_RDWR), h,
|
(h->flags & URL_WRONLY || h->flags & URL_RDWR), h,
|
||||||
ffurl_read, ffurl_write, url_seek) < 0) {
|
ffurl_read, ffurl_write, ffurl_seek) < 0) {
|
||||||
av_free(buffer);
|
av_free(buffer);
|
||||||
av_freep(s);
|
av_freep(s);
|
||||||
return AVERROR(EIO);
|
return AVERROR(EIO);
|
||||||
|
@ -141,7 +141,7 @@ static int concat_read(URLContext *h, unsigned char *buf, int size)
|
|||||||
return total ? total : result;
|
return total ? total : result;
|
||||||
if (!result)
|
if (!result)
|
||||||
if (i + 1 == data->length ||
|
if (i + 1 == data->length ||
|
||||||
url_seek(nodes[++i].uc, 0, SEEK_SET) < 0)
|
ffurl_seek(nodes[++i].uc, 0, SEEK_SET) < 0)
|
||||||
break;
|
break;
|
||||||
total += result;
|
total += result;
|
||||||
buf += result;
|
buf += result;
|
||||||
@ -169,7 +169,7 @@ static int64_t concat_seek(URLContext *h, int64_t pos, int whence)
|
|||||||
/* get the absolute position */
|
/* get the absolute position */
|
||||||
for (i = 0; i != data->current; i++)
|
for (i = 0; i != data->current; i++)
|
||||||
pos += nodes[i].size;
|
pos += nodes[i].size;
|
||||||
pos += url_seek(nodes[i].uc, 0, SEEK_CUR);
|
pos += ffurl_seek(nodes[i].uc, 0, SEEK_CUR);
|
||||||
whence = SEEK_SET;
|
whence = SEEK_SET;
|
||||||
/* fall through with the absolute position */
|
/* fall through with the absolute position */
|
||||||
case SEEK_SET:
|
case SEEK_SET:
|
||||||
@ -180,7 +180,7 @@ static int64_t concat_seek(URLContext *h, int64_t pos, int whence)
|
|||||||
return AVERROR(EINVAL);
|
return AVERROR(EINVAL);
|
||||||
}
|
}
|
||||||
|
|
||||||
result = url_seek(nodes[i].uc, pos, whence);
|
result = ffurl_seek(nodes[i].uc, pos, whence);
|
||||||
if (result >= 0) {
|
if (result >= 0) {
|
||||||
data->current = i;
|
data->current = i;
|
||||||
while (i)
|
while (i)
|
||||||
|
@ -86,4 +86,20 @@ int ffurl_read_complete(URLContext *h, unsigned char *buf, int size);
|
|||||||
*/
|
*/
|
||||||
int ffurl_write(URLContext *h, const unsigned char *buf, int size);
|
int ffurl_write(URLContext *h, const unsigned char *buf, int size);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Change the position that will be used by the next read/write
|
||||||
|
* operation on the resource accessed by h.
|
||||||
|
*
|
||||||
|
* @param pos specifies the new position to set
|
||||||
|
* @param whence specifies how pos should be interpreted, it must be
|
||||||
|
* one of SEEK_SET (seek from the beginning), SEEK_CUR (seek from the
|
||||||
|
* current position), SEEK_END (seek from the end), or AVSEEK_SIZE
|
||||||
|
* (return the filesize of the requested resource, pos is ignored).
|
||||||
|
* @return a negative value corresponding to an AVERROR code in case
|
||||||
|
* of failure, or the resulting file position, measured in bytes from
|
||||||
|
* the beginning of the file. You can use this feature together with
|
||||||
|
* SEEK_CUR to read the current file position.
|
||||||
|
*/
|
||||||
|
int64_t ffurl_seek(URLContext *h, int64_t pos, int whence);
|
||||||
|
|
||||||
#endif //AVFORMAT_URL_H
|
#endif //AVFORMAT_URL_H
|
||||||
|
Loading…
Reference in New Issue
Block a user