Browse Source

lavf/avio: Extend API with avio_move() and avio_delete()

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
tags/n2.8
Mariusz Szczepańczyk Michael Niedermayer 10 years ago
parent
commit
80e18bb486
5 changed files with 64 additions and 1 deletions
  1. +4
    -0
      doc/APIchanges
  2. +38
    -0
      libavformat/avio.c
  3. +19
    -0
      libavformat/avio.h
  4. +2
    -0
      libavformat/url.h
  5. +1
    -1
      libavformat/version.h

+ 4
- 0
doc/APIchanges View File

@@ -15,6 +15,10 @@ libavutil: 2014-08-09


API changes, most recent first: API changes, most recent first:


2015-xx-xx - xxxxxxx - lavf 56.38.100 - avio.h url.h
Add avio_move(), avio_delete().
Extend URLProtocol with url_move(), url_delete().

-------- 8< --------- FFmpeg 2.7 was cut here -------- 8< --------- -------- 8< --------- FFmpeg 2.7 was cut here -------- 8< ---------


2015-06-04 - cc17b43 - lswr 1.2.100 2015-06-04 - cc17b43 - lswr 1.2.100


+ 38
- 0
libavformat/avio.c View File

@@ -421,6 +421,44 @@ int avio_check(const char *url, int flags)
return ret; return ret;
} }


int avio_move(const char *url_src, const char *url_dst)
{
URLContext *h_src, *h_dst;
int ret = ffurl_alloc(&h_src, url_src, AVIO_FLAG_READ_WRITE, NULL);
if (ret < 0)
return ret;
ret = ffurl_alloc(&h_dst, url_dst, AVIO_FLAG_WRITE, NULL);
if (ret < 0) {
ffurl_close(h_src);
return ret;
}

if (h_src->prot == h_dst->prot && h_src->prot->url_move)
ret = h_src->prot->url_move(h_src, h_dst);
else
ret = AVERROR(ENOSYS);

ffurl_close(h_src);
ffurl_close(h_dst);
return ret;
}

int avio_delete(const char *url)
{
URLContext *h;
int ret = ffurl_alloc(&h, url, AVIO_FLAG_WRITE, NULL);
if (ret < 0)
return ret;

if (h->prot->url_delete)
ret = h->prot->url_delete(h);
else
ret = AVERROR(ENOSYS);

ffurl_close(h);
return ret;
}

int avio_open_dir(AVIODirContext **s, const char *url, AVDictionary **options) int avio_open_dir(AVIODirContext **s, const char *url, AVDictionary **options)
{ {
URLContext *h = NULL; URLContext *h = NULL;


+ 19
- 0
libavformat/avio.h View File

@@ -229,6 +229,25 @@ const char *avio_find_protocol_name(const char *url);
*/ */
int avio_check(const char *url, int flags); int avio_check(const char *url, int flags);


/**
* Move or rename a resource.
*
* @note url_src and url_dst should share the same protocol and authority.
*
* @param url_src url to resource to be moved
* @param url_dst new url to resource if the operation succeeded
* @return >=0 on success or negative on error.
*/
int avio_move(const char *url_src, const char *url_dst);

/**
* Delete a resource.
*
* @param url resource to be deleted.
* @return >=0 on success or negative on error.
*/
int avio_delete(const char *url);

/** /**
* Open directory for reading. * Open directory for reading.
* *


+ 2
- 0
libavformat/url.h View File

@@ -90,6 +90,8 @@ typedef struct URLProtocol {
int (*url_open_dir)(URLContext *h); int (*url_open_dir)(URLContext *h);
int (*url_read_dir)(URLContext *h, AVIODirEntry **next); int (*url_read_dir)(URLContext *h, AVIODirEntry **next);
int (*url_close_dir)(URLContext *h); int (*url_close_dir)(URLContext *h);
int (*url_delete)(URLContext *h);
int (*url_move)(URLContext *h_src, URLContext *h_dst);
} URLProtocol; } URLProtocol;


/** /**


+ 1
- 1
libavformat/version.h View File

@@ -30,7 +30,7 @@
#include "libavutil/version.h" #include "libavutil/version.h"


#define LIBAVFORMAT_VERSION_MAJOR 56 #define LIBAVFORMAT_VERSION_MAJOR 56
#define LIBAVFORMAT_VERSION_MINOR 37
#define LIBAVFORMAT_VERSION_MINOR 38
#define LIBAVFORMAT_VERSION_MICRO 100 #define LIBAVFORMAT_VERSION_MICRO 100


#define LIBAVFORMAT_VERSION_INT AV_VERSION_INT(LIBAVFORMAT_VERSION_MAJOR, \ #define LIBAVFORMAT_VERSION_INT AV_VERSION_INT(LIBAVFORMAT_VERSION_MAJOR, \


Loading…
Cancel
Save