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)
|
||||
return err;
|
||||
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))
|
||||
|| !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;
|
||||
return 0;
|
||||
}
|
||||
@ -192,6 +192,10 @@ int url_write(URLContext *h, const unsigned char *buf, int 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
|
||||
|
||||
#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);
|
||||
}
|
||||
|
||||
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;
|
||||
|
||||
@ -334,13 +338,13 @@ int64_t url_filesize(URLContext *h)
|
||||
{
|
||||
int64_t pos, size;
|
||||
|
||||
size= url_seek(h, 0, AVSEEK_SIZE);
|
||||
size= ffurl_seek(h, 0, AVSEEK_SIZE);
|
||||
if(size<0){
|
||||
pos = url_seek(h, 0, SEEK_CUR);
|
||||
if ((size = url_seek(h, -1, SEEK_END)) < 0)
|
||||
pos = ffurl_seek(h, 0, SEEK_CUR);
|
||||
if ((size = ffurl_seek(h, -1, SEEK_END)) < 0)
|
||||
return size;
|
||||
size++;
|
||||
url_seek(h, pos, SEEK_SET);
|
||||
ffurl_seek(h, pos, SEEK_SET);
|
||||
}
|
||||
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_complete(URLContext *h, 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
|
||||
|
||||
/**
|
||||
* 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
|
||||
* memory used by it.
|
||||
|
@ -846,7 +846,7 @@ int ffio_fdopen(AVIOContext **s, URLContext *h)
|
||||
|
||||
if (ffio_init_context(*s, buffer, buffer_size,
|
||||
(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_freep(s);
|
||||
return AVERROR(EIO);
|
||||
|
@ -141,7 +141,7 @@ static int concat_read(URLContext *h, unsigned char *buf, int size)
|
||||
return total ? total : result;
|
||||
if (!result)
|
||||
if (i + 1 == data->length ||
|
||||
url_seek(nodes[++i].uc, 0, SEEK_SET) < 0)
|
||||
ffurl_seek(nodes[++i].uc, 0, SEEK_SET) < 0)
|
||||
break;
|
||||
total += result;
|
||||
buf += result;
|
||||
@ -169,7 +169,7 @@ static int64_t concat_seek(URLContext *h, int64_t pos, int whence)
|
||||
/* get the absolute position */
|
||||
for (i = 0; i != data->current; i++)
|
||||
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;
|
||||
/* fall through with the absolute position */
|
||||
case SEEK_SET:
|
||||
@ -180,7 +180,7 @@ static int64_t concat_seek(URLContext *h, int64_t pos, int whence)
|
||||
return AVERROR(EINVAL);
|
||||
}
|
||||
|
||||
result = url_seek(nodes[i].uc, pos, whence);
|
||||
result = ffurl_seek(nodes[i].uc, pos, whence);
|
||||
if (result >= 0) {
|
||||
data->current = 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);
|
||||
|
||||
/**
|
||||
* 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
|
||||
|
Loading…
Reference in New Issue
Block a user