[FFmpeg-devel] [PATCH] lavf/libsmbclient: implement move and delete callbacks

2015-06-21 Thread Mariusz Szczepańczyk
---
 libavformat/libsmbclient.c | 63 ++
 1 file changed, 63 insertions(+)

diff --git a/libavformat/libsmbclient.c b/libavformat/libsmbclient.c
index 1af8163..84fef7f 100644
--- a/libavformat/libsmbclient.c
+++ b/libavformat/libsmbclient.c
@@ -287,6 +287,67 @@ static int libsmbc_close_dir(URLContext *h)
 return 0;
 }
 
+static int libsmbc_delete(URLContext *h)
+{
+LIBSMBContext *libsmbc = h->priv_data;
+int ret;
+struct stat st;
+
+if ((ret = libsmbc_connect(h)) < 0)
+goto cleanup;
+
+if ((libsmbc->fd = smbc_open(h->filename, O_WRONLY, 0666)) < 0) {
+ret = AVERROR(errno);
+goto cleanup;
+}
+
+if (smbc_fstat(libsmbc->fd, &st) < 0) {
+ret = AVERROR(errno);
+goto cleanup;
+}
+
+smbc_close(libsmbc->fd);
+libsmbc->fd = -1;
+
+if (S_ISDIR(st.st_mode)) {
+if (smbc_rmdir(h->filename) < 0) {
+ret = AVERROR(errno);
+goto cleanup;
+}
+} else {
+if (smbc_unlink(h->filename) < 0) {
+ret = AVERROR(errno);
+goto cleanup;
+}
+}
+
+ret = 0;
+
+cleanup:
+libsmbc_close(h);
+return ret;
+}
+
+static int libsmbc_move(URLContext *h_src, URLContext *h_dst)
+{
+LIBSMBContext *libsmbc = h_src->priv_data;
+int ret;
+
+if ((ret = libsmbc_connect(h_src)) < 0)
+goto cleanup;
+
+if ((libsmbc->dh = smbc_rename(h_src->filename, h_dst->filename)) < 0) {
+ret = AVERROR(errno);
+goto cleanup;
+}
+
+ret = 0;
+
+cleanup:
+libsmbc_close(h_src);
+return ret;
+}
+
 #define OFFSET(x) offsetof(LIBSMBContext, x)
 #define D AV_OPT_FLAG_DECODING_PARAM
 #define E AV_OPT_FLAG_ENCODING_PARAM
@@ -311,6 +372,8 @@ URLProtocol ff_libsmbclient_protocol = {
 .url_write   = libsmbc_write,
 .url_seek= libsmbc_seek,
 .url_close   = libsmbc_close,
+.url_delete  = libsmbc_delete,
+.url_move= libsmbc_move,
 .url_open_dir= libsmbc_open_dir,
 .url_read_dir= libsmbc_read_dir,
 .url_close_dir   = libsmbc_close_dir,
-- 
2.3.6

___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


Re: [FFmpeg-devel] [PATCH] avcodec: Add support for per-frame AFD output in h264

2015-06-21 Thread Michael Niedermayer
On Mon, Jun 22, 2015 at 12:01:06AM +0100, Kieran Kunhya wrote:
> 

>  h264.c |   11 +++
>  h264.h |3 +++
>  h264_sei.c |6 ++
>  3 files changed, 20 insertions(+)
> 0795671b9553ff2c0af24c0004e582bcbe5b3554  
> 0001-avcodec-Add-support-for-per-frame-AFD-output-in-h264.patch
> From 6c0c94f8581d9e76301b03f9f416972fc0265fb6 Mon Sep 17 00:00:00 2001
> From: Kieran Kunhya 
> Date: Sun, 21 Jun 2015 23:59:12 +0100
> Subject: [PATCH] avcodec: Add support for per-frame AFD output in h264
> 
> ---
>  libavcodec/h264.c | 11 +++
>  libavcodec/h264.h |  3 +++
>  libavcodec/h264_sei.c |  6 ++
>  3 files changed, 20 insertions(+)
> 
> diff --git a/libavcodec/h264.c b/libavcodec/h264.c
> index 9be317c..de17edd 100644
> --- a/libavcodec/h264.c
> +++ b/libavcodec/h264.c
> @@ -608,6 +608,7 @@ static int h264_init_context(AVCodecContext *avctx, 
> H264Context *h)
>  h->frame_recovered   = 0;
>  h->prev_frame_num= -1;
>  h->sei_fpa.frame_packing_arrangement_cancel_flag = -1;
> +h->has_afd   = 0;
>  
>  h->next_outputed_poc = INT_MIN;
>  for (i = 0; i < MAX_DELAYED_PIC_COUNT; i++)
> @@ -869,6 +870,16 @@ static void decode_postinit(H264Context *h, int 
> setup_finished)
>  }
>  }
>  
> +if (h->has_afd) {
> +AVFrameSideData *sd =
> +av_frame_new_side_data(cur->f, AV_FRAME_DATA_AFD, 1);
> +if (!sd)

> +return AVERROR(ENOMEM);

decode_postinit() has a void return value


[...]

-- 
Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

I do not agree with what you have to say, but I'll defend to the death your
right to say it. -- Voltaire


signature.asc
Description: Digital signature
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


[FFmpeg-devel] [PATCH] avcodec: Add support for per-frame AFD output in h264

2015-06-21 Thread Kieran Kunhya

From 6c0c94f8581d9e76301b03f9f416972fc0265fb6 Mon Sep 17 00:00:00 2001
From: Kieran Kunhya 
Date: Sun, 21 Jun 2015 23:59:12 +0100
Subject: [PATCH] avcodec: Add support for per-frame AFD output in h264

---
 libavcodec/h264.c | 11 +++
 libavcodec/h264.h |  3 +++
 libavcodec/h264_sei.c |  6 ++
 3 files changed, 20 insertions(+)

diff --git a/libavcodec/h264.c b/libavcodec/h264.c
index 9be317c..de17edd 100644
--- a/libavcodec/h264.c
+++ b/libavcodec/h264.c
@@ -608,6 +608,7 @@ static int h264_init_context(AVCodecContext *avctx, H264Context *h)
 h->frame_recovered   = 0;
 h->prev_frame_num= -1;
 h->sei_fpa.frame_packing_arrangement_cancel_flag = -1;
+h->has_afd   = 0;
 
 h->next_outputed_poc = INT_MIN;
 for (i = 0; i < MAX_DELAYED_PIC_COUNT; i++)
@@ -869,6 +870,16 @@ static void decode_postinit(H264Context *h, int setup_finished)
 }
 }
 
+if (h->has_afd) {
+AVFrameSideData *sd =
+av_frame_new_side_data(cur->f, AV_FRAME_DATA_AFD, 1);
+if (!sd)
+return AVERROR(ENOMEM);
+
+*sd->data   = h->afd;
+h->has_afd = 0;
+}
+
 cur->mmco_reset = h->mmco_reset;
 h->mmco_reset = 0;
 
diff --git a/libavcodec/h264.h b/libavcodec/h264.h
index 548510d..7565e03 100644
--- a/libavcodec/h264.h
+++ b/libavcodec/h264.h
@@ -781,6 +781,9 @@ typedef struct H264Context {
 
 int missing_fields;
 
+uint8_t afd;
+int has_afd;
+
 
 // Timestamp stuff
 int sei_buffering_period_present;   ///< Buffering period SEI flag
diff --git a/libavcodec/h264_sei.c b/libavcodec/h264_sei.c
index 8e1697a..b6ec5c7 100644
--- a/libavcodec/h264_sei.c
+++ b/libavcodec/h264_sei.c
@@ -132,7 +132,13 @@ static int decode_user_data_itu_t_t35(H264Context *h, int size)
 return -1;
 skip_bits(&h->gb, 4);
 dtg_active_format = get_bits(&h->gb, 4);
+#if FF_API_AFD
+FF_DISABLE_DEPRECATION_WARNINGS
 h->avctx->dtg_active_format = dtg_active_format;
+FF_ENABLE_DEPRECATION_WARNINGS
+#endif /* FF_API_AFD */
+h->has_afd = 1;
+h->afd = dtg_active_format;
 } else {
 skip_bits(&h->gb, 6);
 }
-- 
1.9.1

___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


Re: [FFmpeg-devel] [PATCH] yuv4mpeg: add rough duration estimate and seeking.

2015-06-21 Thread Michael Niedermayer
On Sun, Jun 21, 2015 at 04:41:23PM -0400, Ronald S. Bultje wrote:
> ---
>  libavformat/yuv4mpeg.h|  1 +
>  libavformat/yuv4mpegdec.c | 26 +++---
>  2 files changed, 20 insertions(+), 7 deletions(-)

this needs to update the reference checksum for
fate-seek-lavf-yuv4mpeg assuming the change is intended


--- ./tests/ref/seek/lavf-yuv4mpeg  2015-06-20 16:32:37.183978941 +0200
+++ tests/data/fate/seek-lavf-yuv4mpeg  2015-06-22 00:38:43.982413616 +0200
@@ -1,27 +1,53 @@
 ret: 0 st: 0 flags:1 dts: 0.00 pts: 0.00 pos: 64 
size:152064
-ret:-1 st:-1 flags:0  ts:-1.00
-ret:-1 st:-1 flags:1  ts: 1.894167
-ret:-1 st: 0 flags:0  ts: 0.80
-ret:-1 st: 0 flags:1  ts:-0.32
-ret:-1 st:-1 flags:0  ts: 2.576668
-ret:-1 st:-1 flags:1  ts: 1.470835
-ret:-1 st: 0 flags:0  ts: 0.36
-ret:-1 st: 0 flags:1  ts:-0.76
-ret:-1 st:-1 flags:0  ts: 2.153336
-ret:-1 st:-1 flags:1  ts: 1.047503
-ret:-1 st: 0 flags:0  ts:-0.04
-ret:-1 st: 0 flags:1  ts: 2.84
-ret:-1 st:-1 flags:0  ts: 1.730004
-ret:-1 st:-1 flags:1  ts: 0.624171
-ret:-1 st: 0 flags:0  ts:-0.48
-ret:-1 st: 0 flags:1  ts: 2.40
-ret:-1 st:-1 flags:0  ts: 1.306672
-ret:-1 st:-1 flags:1  ts: 0.200839
-ret:-1 st: 0 flags:0  ts:-0.92
-ret:-1 st: 0 flags:1  ts: 2.00
-ret:-1 st:-1 flags:0  ts: 0.883340
-ret:-1 st:-1 flags:1  ts:-0.222493
-ret:-1 st: 0 flags:0  ts: 2.68
-ret:-1 st: 0 flags:1  ts: 1.56
-ret:-1 st:-1 flags:0  ts: 0.460008
-ret:-1 st:-1 flags:1  ts:-0.645825
+ret: 0 st:-1 flags:0  ts:-1.00
+ret: 0 st: 0 flags:1 dts: 0.04 pts: 0.04 pos: 152134 
size:152064
+ret: 0 st:-1 flags:1  ts: 1.894167
+ret:-EOF
+ret: 0 st: 0 flags:0  ts: 0.80
+ret: 0 st: 0 flags:1 dts: 0.80 pts: 0.80 pos:3041464 
size:152064
+ret: 0 st: 0 flags:1  ts:-0.32
+ret: 0 st: 0 flags:1 dts: 0.84 pts: 0.84 pos:3193534 
size:152064
+ret: 0 st:-1 flags:0  ts: 2.576668
+ret:-EOF
+ret: 0 st:-1 flags:1  ts: 1.470835
+ret:-EOF
+ret: 0 st: 0 flags:0  ts: 0.36
+ret: 0 st: 0 flags:1 dts: 0.36 pts: 0.36 pos:1368694 
size:152064
+ret: 0 st: 0 flags:1  ts:-0.76
+ret: 0 st: 0 flags:1 dts: 0.40 pts: 0.40 pos:1520764 
size:152064
+ret: 0 st:-1 flags:0  ts: 2.153336
+ret:-EOF
+ret: 0 st:-1 flags:1  ts: 1.047503
+ret:-EOF
+ret: 0 st: 0 flags:0  ts:-0.04
+ret:-EOF
+ret: 0 st: 0 flags:1  ts: 2.84
+ret:-EOF
+ret: 0 st:-1 flags:0  ts: 1.730004
+ret:-EOF
+ret: 0 st:-1 flags:1  ts: 0.624171
+ret: 0 st: 0 flags:1 dts: 0.64 pts: 0.64 pos:2433184 
size:152064
+ret: 0 st: 0 flags:0  ts:-0.48
+ret: 0 st: 0 flags:1 dts: 0.68 pts: 0.68 pos:2585254 
size:152064
+ret: 0 st: 0 flags:1  ts: 2.40
+ret:-EOF
+ret: 0 st:-1 flags:0  ts: 1.306672
+ret:-EOF
+ret: 0 st:-1 flags:1  ts: 0.200839
+ret: 0 st: 0 flags:1 dts: 0.20 pts: 0.20 pos: 760414 
size:152064
+ret: 0 st: 0 flags:0  ts:-0.92
+ret: 0 st: 0 flags:1 dts: 0.24 pts: 0.24 pos: 912484 
size:152064
+ret: 0 st: 0 flags:1  ts: 2.00
+ret:-EOF
+ret: 0 st:-1 flags:0  ts: 0.883340
+ret: 0 st: 0 flags:1 dts: 0.88 pts: 0.88 pos:3345604 
size:152064
+ret: 0 st:-1 flags:1  ts:-0.222493
+ret: 0 st: 0 flags:1 dts: 0.92 pts: 0.92 pos:3497674 
size:152064
+ret: 0 st: 0 flags:0  ts: 2.68
+ret:-EOF
+ret: 0 st: 0 flags:1  ts: 1.56
+ret:-EOF
+ret: 0 st:-1 flags:0  ts: 0.460008
+ret: 0 st: 0 flags:1 dts: 0.48 pts: 0.48 pos:1824904 
size:152064
+ret: 0 st:-1 flags:1  ts:-0.645825
+ret: 0 st: 0 flags:1 dts: 0.52 pts: 0.52 pos:1976974 
size:152064
Test seek-lavf-yuv4mpeg failed. Look at tests/data/fate/seek-lavf-yuv4mpeg.err 
for details.
make: *** [fate-seek-lavf-yuv4mpeg] Error 1
make: *** Waiting for unfinished jobs



[]
-- 
Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

No snowflake in an avalanche ever feels responsible. -- Voltaire


signature.asc
Description: Digital signature
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


Re: [FFmpeg-devel] [PATCH] yuv4mpeg: add rough duration estimate and seeking.

2015-06-21 Thread Ronald S. Bultje
Hi,

On Sun, Jun 21, 2015 at 5:17 PM, Hendrik Leppkes 
wrote:

> On Sun, Jun 21, 2015 at 10:41 PM, Ronald S. Bultje 
> wrote:
> > ---
> >  libavformat/yuv4mpeg.h|  1 +
> >  libavformat/yuv4mpegdec.c | 26 +++---
> >  2 files changed, 20 insertions(+), 7 deletions(-)
> >
>
> What happens if a seek does not end up on a perfect frame boundary?
> Wouldn't that entirely screw over any further reading?
>
> So is it really that "rough", or does it actually work precise enough
> to do that?


It works for all y4m files I see in the wild, but the problem is that the
y4m spec is a little confusing. The frame header magic is "FRAME", followed
by optional per-frame options, and then a "\n". This is always empty (i.e.
"FRAME\n"), but in theory it could be non-empty and then this doesn't work.

I don't know how much we care about such theoretical files to make a more
difficult dur/seek implementation.

Ronald
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


[FFmpeg-devel] [PATCH 1/2] lavf/file: implement directory listing callbacks

2015-06-21 Thread Mariusz Szczepańczyk
From: Lukasz Marek 

Signed-off-by: Lukasz Marek 
---
 libavformat/file.c | 87 ++
 1 file changed, 87 insertions(+)

diff --git a/libavformat/file.c b/libavformat/file.c
index 6511328..e617ac8 100644
--- a/libavformat/file.c
+++ b/libavformat/file.c
@@ -23,6 +23,7 @@
 #include "libavutil/internal.h"
 #include "libavutil/opt.h"
 #include "avformat.h"
+#include 
 #include 
 #if HAVE_IO_H
 #include 
@@ -51,6 +52,7 @@ typedef struct FileContext {
 int fd;
 int trunc;
 int blocksize;
+DIR *dir;
 } FileContext;
 
 static const AVOption file_options[] = {
@@ -189,6 +191,88 @@ static int file_close(URLContext *h)
 return close(c->fd);
 }
 
+static int file_open_dir(URLContext *h)
+{
+FileContext *c = h->priv_data;
+
+c->dir = opendir(h->filename);
+if (!c->dir)
+return AVERROR(errno);
+
+return 0;
+}
+
+static int file_read_dir(URLContext *h, AVIODirEntry **next)
+{
+FileContext *c = h->priv_data;
+struct dirent *dir;
+char *fullpath = NULL;
+
+*next = ff_alloc_dir_entry();
+if (!*next)
+return AVERROR(ENOMEM);
+do {
+errno = 0;
+dir = readdir(c->dir);
+if (!dir) {
+av_freep(next);
+return AVERROR(errno);
+}
+} while (!strcmp(dir->d_name, ".") || !strcmp(dir->d_name, ".."));
+
+fullpath = av_append_path_component(h->filename, dir->d_name);
+if (fullpath) {
+struct stat st;
+if (!stat(fullpath, &st)) {
+(*next)->group_id = st.st_gid;
+(*next)->user_id = st.st_uid;
+(*next)->size = st.st_size;
+(*next)->filemode = st.st_mode & 0777;
+(*next)->modification_timestamp = INT64_C(100) * st.st_mtime;
+(*next)->access_timestamp =  INT64_C(100) * st.st_atime;
+(*next)->status_change_timestamp = INT64_C(100) * st.st_ctime;
+}
+av_free(fullpath);
+}
+
+(*next)->name = av_strdup(dir->d_name);
+switch (dir->d_type) {
+case DT_FIFO:
+(*next)->type = AVIO_ENTRY_NAMED_PIPE;
+break;
+case DT_CHR:
+(*next)->type = AVIO_ENTRY_CHARACTER_DEVICE;
+break;
+case DT_DIR:
+(*next)->type = AVIO_ENTRY_DIRECTORY;
+break;
+case DT_BLK:
+(*next)->type = AVIO_ENTRY_BLOCK_DEVICE;
+break;
+case DT_REG:
+(*next)->type = AVIO_ENTRY_FILE;
+break;
+case DT_LNK:
+(*next)->type = AVIO_ENTRY_SYMBOLIC_LINK;
+break;
+case DT_SOCK:
+(*next)->type = AVIO_ENTRY_SOCKET;
+break;
+case DT_UNKNOWN:
+default:
+(*next)->type = AVIO_ENTRY_UNKNOWN;
+break;
+}
+return 0;
+}
+
+static int file_close_dir(URLContext *h)
+{
+FileContext *c = h->priv_data;
+closedir(c->dir);
+return 0;
+}
+
 URLProtocol ff_file_protocol = {
 .name= "file",
 .url_open= file_open,
@@ -200,6 +284,9 @@ URLProtocol ff_file_protocol = {
 .url_check   = file_check,
 .priv_data_size  = sizeof(FileContext),
 .priv_data_class = &file_class,
+.url_open_dir= file_open_dir,
+.url_read_dir= file_read_dir,
+.url_close_dir   = file_close_dir,
 };
 
 #endif /* CONFIG_FILE_PROTOCOL */
-- 
2.3.6

___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


[FFmpeg-devel] [PATCH 2/2] lavf/file: check for dirent.h support

2015-06-21 Thread Mariusz Szczepańczyk
---
 configure  |  2 ++
 libavformat/file.c | 34 ++
 2 files changed, 36 insertions(+)

diff --git a/configure b/configure
index 06a9941..09a71d8 100755
--- a/configure
+++ b/configure
@@ -1679,6 +1679,7 @@ HEADERS_LIST="
 dev_video_bktr_ioctl_bt848_h
 dev_video_meteor_ioctl_meteor_h
 direct_h
+dirent_h
 dlfcn_h
 d3d11_h
 dxva_h
@@ -4985,6 +4986,7 @@ enabled xlib &&
 check_func_headers "X11/Xlib.h X11/extensions/Xvlib.h" XvGetPortAttribute 
-lXv -lX11 -lXext
 
 check_header direct.h
+check_header dirent.h
 check_header dlfcn.h
 check_header d3d11.h
 check_header dxva.h
diff --git a/libavformat/file.c b/libavformat/file.c
index e617ac8..bb9ede6 100644
--- a/libavformat/file.c
+++ b/libavformat/file.c
@@ -23,7 +23,9 @@
 #include "libavutil/internal.h"
 #include "libavutil/opt.h"
 #include "avformat.h"
+#if HAVE_DIRENT_H
 #include 
+#endif
 #include 
 #if HAVE_IO_H
 #include 
@@ -52,7 +54,9 @@ typedef struct FileContext {
 int fd;
 int trunc;
 int blocksize;
+#if HAVE_DIRENT_H
 DIR *dir;
+#endif
 } FileContext;
 
 static const AVOption file_options[] = {
@@ -193,6 +197,7 @@ static int file_close(URLContext *h)
 
 static int file_open_dir(URLContext *h)
 {
+#if HAVE_DIRENT_H
 FileContext *c = h->priv_data;
 
 c->dir = opendir(h->filename);
@@ -200,10 +205,14 @@ static int file_open_dir(URLContext *h)
 return AVERROR(errno);
 
 return 0;
+#else
+return AVERROR(ENOSYS);
+#endif /* HAVE_DIRENT_H */
 }
 
 static int file_read_dir(URLContext *h, AVIODirEntry **next)
 {
+#if HAVE_DIRENT_H
 FileContext *c = h->priv_data;
 struct dirent *dir;
 char *fullpath = NULL;
@@ -231,11 +240,28 @@ static int file_read_dir(URLContext *h, AVIODirEntry 
**next)
 (*next)->modification_timestamp = INT64_C(100) * st.st_mtime;
 (*next)->access_timestamp =  INT64_C(100) * st.st_atime;
 (*next)->status_change_timestamp = INT64_C(100) * st.st_ctime;
+
+#ifndef _DIRENT_HAVE_D_TYPE
+if (S_ISDIR(st.st_mode))
+(*next)->type = AVIO_ENTRY_DIRECTORY;
+else if (S_ISFIFO(st.st_mode))
+(*next)->type = AVIO_ENTRY_NAMED_PIPE;
+else if (S_ISCHR(st.st_mode))
+(*next)->type = AVIO_ENTRY_CHARACTER_DEVICE;
+else if (S_ISBLK(st.st_mode))
+(*next)->type = AVIO_ENTRY_BLOCK_DEVICE;
+else if (S_ISREG(st.st_mode))
+(*next)->type = AVIO_ENTRY_FILE;
+else
+(*next)->type = AVIO_ENTRY_UNKNOWN;
+#endif /* _DIRENT_HAVE_D_TYPE */
 }
 av_free(fullpath);
 }
 
 (*next)->name = av_strdup(dir->d_name);
+
+#ifdef _DIRENT_HAVE_D_TYPE
 switch (dir->d_type) {
 case DT_FIFO:
 (*next)->type = AVIO_ENTRY_NAMED_PIPE;
@@ -263,14 +289,22 @@ static int file_read_dir(URLContext *h, AVIODirEntry 
**next)
 (*next)->type = AVIO_ENTRY_UNKNOWN;
 break;
 }
+#endif /* _DIRENT_HAVE_D_TYPE */
 return 0;
+#else
+return AVERROR(ENOSYS);
+#endif /* HAVE_DIRENT_H */
 }
 
 static int file_close_dir(URLContext *h)
 {
+#if HAVE_DIRENT_H
 FileContext *c = h->priv_data;
 closedir(c->dir);
 return 0;
+#else
+return AVERROR(ENOSYS);
+#endif /* HAVE_DIRENT_H */
 }
 
 URLProtocol ff_file_protocol = {
-- 
2.3.6

___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


[FFmpeg-devel] [PATCH 0/2] [GSoC] lavf/file: implement directory listing callbacks

2015-06-21 Thread Mariusz Szczepańczyk
Lukasz Marek (1):
  lavf/file: implement directory listing callbacks

Mariusz Szczepańczyk (1):
  lavf/file: check for dirent.h support

 configure  |   2 +
 libavformat/file.c | 121 +
 2 files changed, 123 insertions(+)

-- 
2.3.6

___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


Re: [FFmpeg-devel] [PATCH] yuv4mpeg: add rough duration estimate and seeking.

2015-06-21 Thread Hendrik Leppkes
On Sun, Jun 21, 2015 at 10:41 PM, Ronald S. Bultje  wrote:
> ---
>  libavformat/yuv4mpeg.h|  1 +
>  libavformat/yuv4mpegdec.c | 26 +++---
>  2 files changed, 20 insertions(+), 7 deletions(-)
>

What happens if a seek does not end up on a perfect frame boundary?
Wouldn't that entirely screw over any further reading?

So is it really that "rough", or does it actually work precise enough
to do that?

- Hendrik
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


Re: [FFmpeg-devel] [PATCH 1/2] lavf/avio: Extend API with avio_move() and avio_delete()

2015-06-21 Thread Michael Niedermayer
On Sun, Jun 21, 2015 at 10:11:53AM +0200, Hendrik Leppkes wrote:
> On Sat, Jun 20, 2015 at 2:52 PM, Mariusz Szczepańczyk
>  wrote:
> > ---
> >  doc/APIchanges|  4 
> >  libavformat/avio.c| 38 ++
> >  libavformat/avio.h| 19 +++
> >  libavformat/url.h |  2 ++
> >  libavformat/version.h |  2 +-
> >  5 files changed, 64 insertions(+), 1 deletion(-)
> >
> 
> Why do we need moving and deleting files in avio? Whats the use-case for 
> ffmpeg?

In addition to what has been mentioned there is also the need to
atomically replace files in some muxers
we currently use ff_rename() for that, but that is specific to local
files, It would be better / more ideal if that was not specific to
just local files

[...]
-- 
Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

I have never wished to cater to the crowd; for what I know they do not
approve, and what they approve I do not know. -- Epicurus


signature.asc
Description: Digital signature
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


[FFmpeg-devel] [PATCH] yuv4mpeg: add rough duration estimate and seeking.

2015-06-21 Thread Ronald S. Bultje
---
 libavformat/yuv4mpeg.h|  1 +
 libavformat/yuv4mpegdec.c | 26 +++---
 2 files changed, 20 insertions(+), 7 deletions(-)

diff --git a/libavformat/yuv4mpeg.h b/libavformat/yuv4mpeg.h
index 750f498..eba7337 100644
--- a/libavformat/yuv4mpeg.h
+++ b/libavformat/yuv4mpeg.h
@@ -23,5 +23,6 @@
 
 #define Y4M_MAGIC "YUV4MPEG2"
 #define Y4M_FRAME_MAGIC "FRAME"
+#define Y4M_FRAME_MAGIC_LEN 6
 
 #endif /* AVFORMAT_YUV4MPEG_H */
diff --git a/libavformat/yuv4mpegdec.c b/libavformat/yuv4mpegdec.c
index 7613c3c..4ebdb78 100644
--- a/libavformat/yuv4mpegdec.c
+++ b/libavformat/yuv4mpegdec.c
@@ -256,6 +256,12 @@ static int yuv4_read_header(AVFormatContext *s)
 st->sample_aspect_ratio   = (AVRational){ aspectn, aspectd };
 st->codec->chroma_sample_location = chroma_sample_location;
 st->codec->field_order= field_order;
+s->packet_size = avpicture_get_size(st->codec->pix_fmt, width, height) + 
Y4M_FRAME_MAGIC_LEN;
+if ((int) s->packet_size < 0)
+return s->packet_size;
+s->internal->data_offset = avio_tell(pb);
+
+st->duration = (avio_size(pb) - avio_tell(pb)) / s->packet_size;
 
 return 0;
 }
@@ -264,7 +270,7 @@ static int yuv4_read_packet(AVFormatContext *s, AVPacket 
*pkt)
 {
 int i;
 char header[MAX_FRAME_HEADER+1];
-int packet_size, width, height, ret;
+int width, height, ret, off = avio_tell(s->pb);
 AVStream *st = s->streams[0];
 
 for (i = 0; i < MAX_FRAME_HEADER; i++) {
@@ -287,17 +293,22 @@ static int yuv4_read_packet(AVFormatContext *s, AVPacket 
*pkt)
 width  = st->codec->width;
 height = st->codec->height;
 
-packet_size = avpicture_get_size(st->codec->pix_fmt, width, height);
-if (packet_size < 0)
-return packet_size;
-
-ret = av_get_packet(s->pb, pkt, packet_size);
+ret = av_get_packet(s->pb, pkt, s->packet_size - Y4M_FRAME_MAGIC_LEN);
 if (ret < 0)
 return ret;
-else if (ret != packet_size)
+else if (ret != s->packet_size - Y4M_FRAME_MAGIC_LEN)
 return s->pb->eof_reached ? AVERROR_EOF : AVERROR(EIO);
 
 pkt->stream_index = 0;
+pkt->pts = (off - s->internal->data_offset) / s->packet_size;
+pkt->duration = 1;
+return 0;
+}
+
+static int yuv4_read_seek(AVFormatContext *s, int stream_index,
+  int64_t pts, int flags)
+{
+avio_seek(s->pb, pts * s->packet_size + s->internal->data_offset, 
SEEK_SET);
 return 0;
 }
 
@@ -316,5 +327,6 @@ AVInputFormat ff_yuv4mpegpipe_demuxer = {
 .read_probe = yuv4_probe,
 .read_header= yuv4_read_header,
 .read_packet= yuv4_read_packet,
+.read_seek  = yuv4_read_seek,
 .extensions = "y4m",
 };
-- 
2.1.2

___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


Re: [FFmpeg-devel] [PATCH 1/2] lavf/avio: Extend API with avio_move() and avio_delete()

2015-06-21 Thread Mariusz Szczepańczyk
On Sun, Jun 21, 2015 at 8:24 PM, wm4  wrote:

> On Sun, 21 Jun 2015 19:20:53 +0100
> Kieran Kunhya  wrote:
>
> > > Suppose you're writing a video player with browsing capabilities for
> network
> > > protocols (like Kodi/XBMC). Now you can have file rename/delete
> > > functionality in it.
> >
> > Suppose you are writing a video player and need to change the screen
> resolution.
> > Can we have that feature in libavutil too?
> >
>
> Don't give them ideas... there's "space" for such features in
> libavdevice.
>
> (I'd like to have a more general multimedia framework around FFmpeg
> too, but messing such features into the existing libav*s for the lack
> of a better place is _not_ a good idea.)
>

You know you can just say why do you think it's an unneeded feature and
don't have to be trolling.

Anyway, this is a part of my GSoC task that has been accepted and I'm
compelled to implement it so I won't be getting into further discussion.

Mariusz
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


Re: [FFmpeg-devel] [PATCH 1/2] lavf/avio: Extend API with avio_move() and avio_delete()

2015-06-21 Thread wm4
On Sun, 21 Jun 2015 19:20:53 +0100
Kieran Kunhya  wrote:

> > Suppose you're writing a video player with browsing capabilities for network
> > protocols (like Kodi/XBMC). Now you can have file rename/delete
> > functionality in it.
> 
> Suppose you are writing a video player and need to change the screen 
> resolution.
> Can we have that feature in libavutil too?
> 

Don't give them ideas... there's "space" for such features in
libavdevice.

(I'd like to have a more general multimedia framework around FFmpeg
too, but messing such features into the existing libav*s for the lack
of a better place is _not_ a good idea.)
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


Re: [FFmpeg-devel] [PATCH 1/2] lavf/avio: Extend API with avio_move() and avio_delete()

2015-06-21 Thread Kieran Kunhya
> Suppose you're writing a video player with browsing capabilities for network
> protocols (like Kodi/XBMC). Now you can have file rename/delete
> functionality in it.

Suppose you are writing a video player and need to change the screen resolution.
Can we have that feature in libavutil too?

Kieran
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


Re: [FFmpeg-devel] [PATCH 1/2] lavf/avio: Extend API with avio_move() and avio_delete()

2015-06-21 Thread Mariusz Szczepańczyk

On 21/06/15 10:11, Hendrik Leppkes wrote:

On Sat, Jun 20, 2015 at 2:52 PM, Mariusz Szczepańczyk
 wrote:

---
  doc/APIchanges|  4 
  libavformat/avio.c| 38 ++
  libavformat/avio.h| 19 +++
  libavformat/url.h |  2 ++
  libavformat/version.h |  2 +-
  5 files changed, 64 insertions(+), 1 deletion(-)



Why do we need moving and deleting files in avio? Whats the use-case for ffmpeg?

- Hendrik


Suppose you're writing a video player with browsing capabilities for 
network protocols (like Kodi/XBMC). Now you can have file rename/delete 
functionality in it.


Mariusz

___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


Re: [FFmpeg-devel] [PATCH 1/2] lavf/avio: Extend API with avio_move() and avio_delete()

2015-06-21 Thread Mariusz Szczepańczyk

On 21/06/15 09:37, Timothy Gu wrote:



El sábado, 20 de junio de 2015, Mariusz Szczepańczyk
mailto:mszczepanc...@gmail.com>> escribió:

---
  doc/APIchanges|  4 
  libavformat/avio.c| 38 ++
  libavformat/avio.h| 19 +++
  libavformat/url.h |  2 ++
  libavformat/version.h |  2 +-
  5 files changed, 64 insertions(+), 1 deletion(-)

diff --git a/doc/APIchanges b/doc/APIchanges
index 6e64a05..a9efd12 100644
--- a/doc/APIchanges
+++ b/doc/APIchanges
@@ -17,6 +17,10 @@ API changes, most recent first:

   8< - FFmpeg 2.7 was cut here  8< -

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


This goes above the 2.7 release cut line.

Timothy


You're right. Thanks!

Mariusz
>From 283f81e40b8776ac485e0e575ba351618a5c2332 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Mariusz=20Szczepa=C5=84czyk?= 
Date: Wed, 17 Jun 2015 20:12:00 +0200
Subject: [PATCH 1/2] lavf/avio: Extend API with avio_move() and avio_delete()

---
 doc/APIchanges|  4 
 libavformat/avio.c| 38 ++
 libavformat/avio.h| 19 +++
 libavformat/url.h |  2 ++
 libavformat/version.h |  2 +-
 5 files changed, 64 insertions(+), 1 deletion(-)

diff --git a/doc/APIchanges b/doc/APIchanges
index 6e64a05..cc2ebf3 100644
--- a/doc/APIchanges
+++ b/doc/APIchanges
@@ -15,6 +15,10 @@ libavutil: 2014-08-09
 
 API changes, most recent first:
 
+2015-xx-xx - xxx - 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< -
 
 2015-06-04 - cc17b43 - lswr  1.2.100
diff --git a/libavformat/avio.c b/libavformat/avio.c
index 261ff2a..bd32944 100644
--- a/libavformat/avio.c
+++ b/libavformat/avio.c
@@ -421,6 +421,44 @@ int avio_check(const char *url, int flags)
 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)
 {
 URLContext *h = NULL;
diff --git a/libavformat/avio.h b/libavformat/avio.h
index 9f3a992..5ac5d38 100644
--- a/libavformat/avio.h
+++ b/libavformat/avio.h
@@ -230,6 +230,25 @@ const char *avio_find_protocol_name(const char *url);
 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.
  *
  * @param s   directory read context. Pointer to a NULL pointer must be passed.
diff --git a/libavformat/url.h b/libavformat/url.h
index 1a845b7..99a3201 100644
--- a/libavformat/url.h
+++ b/libavformat/url.h
@@ -90,6 +90,8 @@ typedef struct URLProtocol {
 int (*url_open_dir)(URLContext *h);
 int (*url_read_dir)(URLContext *h, AVIODirEntry **next);
 int (*url_close_dir)(URLContext *h);
+int (*url_delete)(URLContext *h);
+int (*url_move)(URLContext *h_src, URLContext *h_dst);
 } URLProtocol;
 
 /**
diff --git a/libavformat/version.h b/libavformat/version.h
index 99b7190..ec84570 100644
--- a/libavformat/version.h
+++ b/libavformat/version.h
@@ -30,7 +30,7 @@
 #include "libavutil/version.h"
 
 #define LIBAVFORMAT_VERSION_MAJOR 56
-#define LIBAVFORMAT_VERSION_MINOR  37
+#define LIBAVFORMAT_VERSION_MINOR  38
 #define LIBAVFORMAT_VERSION_MICRO 100
 
 #define LIBAVFORMAT_VERSION_INT AV_VERSION_INT(LIBAVFORMAT_VERSION_MAJOR, \
-- 
2.3.6

___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http:/

Re: [FFmpeg-devel] [PATCH] avformat/rawenc: Store sample number for ADX

2015-06-21 Thread Michael Niedermayer
On Sun, Jun 21, 2015 at 08:32:46AM +, Paul B Mahol wrote:
> Dana 21. 6. 2015. 00:32 osoba "Michael Niedermayer" 
> napisala je:
> >
> > Fixes Ticket4540
> >
> > Signed-off-by: Michael Niedermayer 
> > ---
> >  libavformat/rawenc.c   |   20 
> >  tests/ref/acodec/adpcm-adx |2 +-
> >  tests/ref/acodec/adpcm-adx-trellis |2 +-
> >  3 files changed, 22 insertions(+), 2 deletions(-)
> >
> > diff --git a/libavformat/rawenc.c b/libavformat/rawenc.c
> > index e59f1ae..d65c7c7 100644
> > --- a/libavformat/rawenc.c
> > +++ b/libavformat/rawenc.c
> > @@ -56,6 +56,25 @@ AVOutputFormat ff_ac3_muxer = {
> >  #endif
> >
> >  #if CONFIG_ADX_MUXER
> > +
> > +static int adx_write_trailer(AVFormatContext *s)
> > +{
> > +AVIOContext *pb = s->pb;
> > +AVCodecContext *avctx = s->streams[0]->codec;
> > +
> > +if (pb->seekable) {
> > +int64_t file_size = avio_tell(pb);
> > +uint64_t sample_count = (file_size - 36) / avctx->channels / 18
> * 32;
> > +if (sample_count <= UINT32_MAX) {
> > +avio_seek(pb, 12, SEEK_SET);
> > +avio_wb32(pb, sample_count);
> > +avio_seek(pb, file_size, SEEK_SET);
> > +}
> > +}
> > +
> > +return 0;
> > +}
> > +
> >  AVOutputFormat ff_adx_muxer = {
> >  .name  = "adx",
> >  .long_name = NULL_IF_CONFIG_SMALL("CRI ADX"),
> > @@ -64,6 +83,7 @@ AVOutputFormat ff_adx_muxer = {
> >  .video_codec   = AV_CODEC_ID_NONE,
> >  .write_header  = force_one_stream,
> >  .write_packet  = ff_raw_write_packet,
> > +.write_trailer = adx_write_trailer,
> >  .flags = AVFMT_NOTIMESTAMPS,
> >  };
> >  #endif
> > diff --git a/tests/ref/acodec/adpcm-adx b/tests/ref/acodec/adpcm-adx
> > index 34dd9b6..8c40100 100644
> > --- a/tests/ref/acodec/adpcm-adx
> > +++ b/tests/ref/acodec/adpcm-adx
> > @@ -1,4 +1,4 @@
> > -d7ec7d52a2f5c91464812d031b07cc1d *tests/data/fate/acodec-adpcm-adx.adx
> > +6bf1a8e5ec9cc958a31cb2b1b66bfc75 *tests/data/fate/acodec-adpcm-adx.adx
> >  297720 tests/data/fate/acodec-adpcm-adx.adx
> >  5b5a436ec9d528d6eb0bebaf667521b0
> *tests/data/fate/acodec-adpcm-adx.out.wav
> >  stddev: 2549.93 PSNR: 28.20 MAXDIFF:57514 bytes:  1058400/  1058432
> > diff --git a/tests/ref/acodec/adpcm-adx-trellis
> b/tests/ref/acodec/adpcm-adx-trellis
> > index d620d4a..039f69f 100644
> > --- a/tests/ref/acodec/adpcm-adx-trellis
> > +++ b/tests/ref/acodec/adpcm-adx-trellis
> > @@ -1,4 +1,4 @@
> > -d7ec7d52a2f5c91464812d031b07cc1d
> *tests/data/fate/acodec-adpcm-adx-trellis.adx
> > +6bf1a8e5ec9cc958a31cb2b1b66bfc75
> *tests/data/fate/acodec-adpcm-adx-trellis.adx
> >  297720 tests/data/fate/acodec-adpcm-adx-trellis.adx
> >  5b5a436ec9d528d6eb0bebaf667521b0
> *tests/data/fate/acodec-adpcm-adx-trellis.out.wav
> >  stddev: 2549.93 PSNR: 28.20 MAXDIFF:57514 bytes:  1058400/  1058432
> > --
> > 1.7.9.5
> >
> > ___
> > ffmpeg-devel mailing list
> > ffmpeg-devel@ffmpeg.org
> > http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
> 
> LGTM

applied

thanks

[...]
-- 
Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

I have often repented speaking, but never of holding my tongue.
-- Xenocrates


signature.asc
Description: Digital signature
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


Re: [FFmpeg-devel] Areas needing work

2015-06-21 Thread Peter Ross
On Tue, Apr 07, 2015 at 10:22:17AM +1000, Peter Ross wrote:
> On Mon, Apr 06, 2015 at 07:24:35PM +0100, Derek Buitenhuis wrote:
> > On 4/6/2015 4:43 AM, Michael Niedermayer wrote:
> [..]
> > > * Conferences / exhibitions, public stuff
> > >   Theres a conference, linuxtag, fosdem, whatever, wherever in your local 
> > > area
> > >   and you think FFmpeg should be represented there ?
> > 
> > FWIW, I attend FOSDEM and VDD representing both FFmpeg and Libav as well as 
> > $dayjob,
> > (just to make sure everyone on every side hates me ;)). I also talked at 
> > IBC at EBU's
> > booth about open source media, and will be in Berlin for SMPTE's 
> > circlejerk^Wforum
> > in May, as talking about open source media (FFmpeg especially). I'm not the 
> > only
> > one, and I think this is pretty well covered in recent years.
> 
> I am thinking of submitting a FFmpeg themed paper to LCA'2016 (Linux 
> Conference Australia).
> If anyone wants to contribute please yell out.
> 
> Topic idea to be decided. Maybe:
> - survey of compression algorithm reuse amongst all our codecs. Might be a 
> lot of work to do, but would be interesting.
> - or describe less known capabilities of FFmpeg.
> - ...
> 
> The LCA call for proposals opens in July-August. 
> My spare time is limited, so to have something ready I need to make a start 
> soon.

Anyone? Ping me.

"The tentative close date for Presentations, Tutorials and Prototypes is 6th 
July.
If you are proposing a Miniconf, you must submit your proposal by 6th July."
http://linux.conf.au/cfp

-- Peter
(A907 E02F A6E5 0CD2 34CD 20D2 6760 79C5 AC40 DD6B)


signature.asc
Description: Digital signature
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


Re: [FFmpeg-devel] [PATCH] avformat/rawenc: Store sample number for ADX

2015-06-21 Thread Paul B Mahol
Dana 21. 6. 2015. 00:32 osoba "Michael Niedermayer" 
napisala je:
>
> Fixes Ticket4540
>
> Signed-off-by: Michael Niedermayer 
> ---
>  libavformat/rawenc.c   |   20 
>  tests/ref/acodec/adpcm-adx |2 +-
>  tests/ref/acodec/adpcm-adx-trellis |2 +-
>  3 files changed, 22 insertions(+), 2 deletions(-)
>
> diff --git a/libavformat/rawenc.c b/libavformat/rawenc.c
> index e59f1ae..d65c7c7 100644
> --- a/libavformat/rawenc.c
> +++ b/libavformat/rawenc.c
> @@ -56,6 +56,25 @@ AVOutputFormat ff_ac3_muxer = {
>  #endif
>
>  #if CONFIG_ADX_MUXER
> +
> +static int adx_write_trailer(AVFormatContext *s)
> +{
> +AVIOContext *pb = s->pb;
> +AVCodecContext *avctx = s->streams[0]->codec;
> +
> +if (pb->seekable) {
> +int64_t file_size = avio_tell(pb);
> +uint64_t sample_count = (file_size - 36) / avctx->channels / 18
* 32;
> +if (sample_count <= UINT32_MAX) {
> +avio_seek(pb, 12, SEEK_SET);
> +avio_wb32(pb, sample_count);
> +avio_seek(pb, file_size, SEEK_SET);
> +}
> +}
> +
> +return 0;
> +}
> +
>  AVOutputFormat ff_adx_muxer = {
>  .name  = "adx",
>  .long_name = NULL_IF_CONFIG_SMALL("CRI ADX"),
> @@ -64,6 +83,7 @@ AVOutputFormat ff_adx_muxer = {
>  .video_codec   = AV_CODEC_ID_NONE,
>  .write_header  = force_one_stream,
>  .write_packet  = ff_raw_write_packet,
> +.write_trailer = adx_write_trailer,
>  .flags = AVFMT_NOTIMESTAMPS,
>  };
>  #endif
> diff --git a/tests/ref/acodec/adpcm-adx b/tests/ref/acodec/adpcm-adx
> index 34dd9b6..8c40100 100644
> --- a/tests/ref/acodec/adpcm-adx
> +++ b/tests/ref/acodec/adpcm-adx
> @@ -1,4 +1,4 @@
> -d7ec7d52a2f5c91464812d031b07cc1d *tests/data/fate/acodec-adpcm-adx.adx
> +6bf1a8e5ec9cc958a31cb2b1b66bfc75 *tests/data/fate/acodec-adpcm-adx.adx
>  297720 tests/data/fate/acodec-adpcm-adx.adx
>  5b5a436ec9d528d6eb0bebaf667521b0
*tests/data/fate/acodec-adpcm-adx.out.wav
>  stddev: 2549.93 PSNR: 28.20 MAXDIFF:57514 bytes:  1058400/  1058432
> diff --git a/tests/ref/acodec/adpcm-adx-trellis
b/tests/ref/acodec/adpcm-adx-trellis
> index d620d4a..039f69f 100644
> --- a/tests/ref/acodec/adpcm-adx-trellis
> +++ b/tests/ref/acodec/adpcm-adx-trellis
> @@ -1,4 +1,4 @@
> -d7ec7d52a2f5c91464812d031b07cc1d
*tests/data/fate/acodec-adpcm-adx-trellis.adx
> +6bf1a8e5ec9cc958a31cb2b1b66bfc75
*tests/data/fate/acodec-adpcm-adx-trellis.adx
>  297720 tests/data/fate/acodec-adpcm-adx-trellis.adx
>  5b5a436ec9d528d6eb0bebaf667521b0
*tests/data/fate/acodec-adpcm-adx-trellis.out.wav
>  stddev: 2549.93 PSNR: 28.20 MAXDIFF:57514 bytes:  1058400/  1058432
> --
> 1.7.9.5
>
> ___
> ffmpeg-devel mailing list
> ffmpeg-devel@ffmpeg.org
> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel

LGTM
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


Re: [FFmpeg-devel] [PATCH 1/2] lavf/avio: Extend API with avio_move() and avio_delete()

2015-06-21 Thread Hendrik Leppkes
On Sat, Jun 20, 2015 at 2:52 PM, Mariusz Szczepańczyk
 wrote:
> ---
>  doc/APIchanges|  4 
>  libavformat/avio.c| 38 ++
>  libavformat/avio.h| 19 +++
>  libavformat/url.h |  2 ++
>  libavformat/version.h |  2 +-
>  5 files changed, 64 insertions(+), 1 deletion(-)
>

Why do we need moving and deleting files in avio? Whats the use-case for ffmpeg?

- Hendrik
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


Re: [FFmpeg-devel] [PATCH 1/2] lavf/avio: Extend API with avio_move() and avio_delete()

2015-06-21 Thread Timothy Gu
El sábado, 20 de junio de 2015, Mariusz Szczepańczyk <
mszczepanc...@gmail.com> escribió:

> ---
>  doc/APIchanges|  4 
>  libavformat/avio.c| 38 ++
>  libavformat/avio.h| 19 +++
>  libavformat/url.h |  2 ++
>  libavformat/version.h |  2 +-
>  5 files changed, 64 insertions(+), 1 deletion(-)
>
> diff --git a/doc/APIchanges b/doc/APIchanges
> index 6e64a05..a9efd12 100644
> --- a/doc/APIchanges
> +++ b/doc/APIchanges
> @@ -17,6 +17,10 @@ API changes, most recent first:
>
>   8< - FFmpeg 2.7 was cut here  8< -
>
> +2015-xx-xx - xxx - lavf 56.38.100 - avio.h url.h
> +  Add avio_move(), avio_delete().
> +  Extend URLProtocol with url_move(), url_delete().
> +


This goes above the 2.7 release cut line.

Timothy
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel