[libav-commits] crypto: Don't manually free memory allocated via AVOptions

2011-11-10 Thread Martin Storsjö
Module: libav
Branch: master
Commit: eaa8c1f9fe254ea0e370e57fec1f5439a50894e8

Author:Martin Storsjö 
Committer: Martin Storsjö 
Date:  Wed Nov  9 00:50:37 2011 +0200

crypto: Don't manually free memory allocated via AVOptions

Signed-off-by: Martin Storsjö 

---

 libavformat/crypto.c |7 +--
 1 files changed, 1 insertions(+), 6 deletions(-)

diff --git a/libavformat/crypto.c b/libavformat/crypto.c
index b9d3e03..2f0e2bd 100644
--- a/libavformat/crypto.c
+++ b/libavformat/crypto.c
@@ -61,7 +61,7 @@ static const AVClass crypto_class = {
 static int crypto_open(URLContext *h, const char *uri, int flags)
 {
 const char *nested_url;
-int ret;
+int ret = 0;
 CryptoContext *c = h->priv_data;
 
 if (!av_strstart(uri, "crypto+", &nested_url) &&
@@ -95,10 +95,7 @@ static int crypto_open(URLContext *h, const char *uri, int 
flags)
 
 h->is_streamed = 1;
 
-return 0;
 err:
-av_freep(&c->key);
-av_freep(&c->iv);
 return ret;
 }
 
@@ -157,8 +154,6 @@ static int crypto_close(URLContext *h)
 if (c->hd)
 ffurl_close(c->hd);
 av_freep(&c->aes);
-av_freep(&c->key);
-av_freep(&c->iv);
 return 0;
 }
 

___
libav-commits mailing list
libav-commits@libav.org
https://lists.libav.org/mailman/listinfo/libav-commits

[libav-commits] http: Make custom headers settable via an AVOption

2011-11-10 Thread Martin Storsjö
Module: libav
Branch: master
Commit: 10da1e913b46eb424b1f89fe8c60e6536713be11

Author:Martin Storsjö 
Committer: Martin Storsjö 
Date:  Mon Nov  7 11:43:13 2011 +0200

http: Make custom headers settable via an AVOption

Signed-off-by: Martin Storsjö 

---

 libavformat/http.c |   21 ++---
 1 files changed, 14 insertions(+), 7 deletions(-)

diff --git a/libavformat/http.c b/libavformat/http.c
index 52e1886..71ada6c 100644
--- a/libavformat/http.c
+++ b/libavformat/http.c
@@ -47,13 +47,14 @@ typedef struct {
 int64_t off, filesize;
 char location[MAX_URL_SIZE];
 HTTPAuthState auth_state;
-unsigned char headers[BUFFER_SIZE];
+char *headers;
 int willclose;  /**< Set if the server correctly handles 
Connection: close and will close the connection after feeding us the content. */
 } HTTPContext;
 
 #define OFFSET(x) offsetof(HTTPContext, x)
 static const AVOption options[] = {
 {"chunksize", "use chunked transfer-encoding for posts, -1 disables it, 0 
enables it", OFFSET(chunksize), AV_OPT_TYPE_INT64, {.dbl = 0}, -1, 0 }, /* 
Default to 0, for chunked POSTs */
+{"headers", "custom HTTP headers, can override built in default headers", 
OFFSET(headers), AV_OPT_TYPE_STRING },
 {NULL}
 };
 static const AVClass httpcontext_class = {
@@ -69,12 +70,9 @@ static int http_connect(URLContext *h, const char *path, 
const char *hoststr,
 void ff_http_set_headers(URLContext *h, const char *headers)
 {
 HTTPContext *s = h->priv_data;
-int len = strlen(headers);
 
-if (len && strcmp("\r\n", headers + len - 2))
-av_log(h, AV_LOG_ERROR, "No trailing CRLF found in HTTP header.\n");
-
-av_strlcpy(s->headers, headers, sizeof(s->headers));
+av_freep(&s->headers);
+s->headers = av_strdup(headers);
 }
 
 void ff_http_init_auth_state(URLContext *dest, const URLContext *src)
@@ -168,6 +166,12 @@ static int http_open(URLContext *h, const char *uri, int 
flags)
 s->filesize = -1;
 av_strlcpy(s->location, uri, sizeof(s->location));
 
+if (s->headers) {
+int len = strlen(s->headers);
+if (len < 2 || strcmp("\r\n", s->headers + len - 2))
+av_log(h, AV_LOG_ERROR, "No trailing CRLF found in HTTP 
header.\n");
+}
+
 return http_open_cnx(h);
 }
 static int http_getc(HTTPContext *s)
@@ -285,6 +289,8 @@ static int process_line(URLContext *h, char *line, int 
line_count,
 static inline int has_header(const char *str, const char *header)
 {
 /* header + 2 to skip over CRLF prefix. (make sure you have one!) */
+if (!str)
+return 0;
 return av_stristart(str, header + 2, NULL) || av_stristr(str, header);
 }
 
@@ -323,7 +329,8 @@ static int http_connect(URLContext *h, const char *path, 
const char *hoststr,
"Host: %s\r\n", hoststr);
 
 /* now add in custom headers */
-av_strlcpy(headers+len, s->headers, sizeof(headers)-len);
+if (s->headers)
+av_strlcpy(headers + len, s->headers, sizeof(headers) - len);
 
 snprintf(s->buffer, sizeof(s->buffer),
  "%s %s HTTP/1.1\r\n"

___
libav-commits mailing list
libav-commits@libav.org
https://lists.libav.org/mailman/listinfo/libav-commits

[libav-commits] rtsp: Set http custom headers via the AVOption

2011-11-10 Thread Martin Storsjö
Module: libav
Branch: master
Commit: 196bf28c5d858e1594f9677fcab8677aca17ad33

Author:Martin Storsjö 
Committer: Martin Storsjö 
Date:  Mon Nov  7 11:45:57 2011 +0200

rtsp: Set http custom headers via the AVOption

Signed-off-by: Martin Storsjö 

---

 libavformat/rtsp.c |4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/libavformat/rtsp.c b/libavformat/rtsp.c
index 84cf922..862582a 100644
--- a/libavformat/rtsp.c
+++ b/libavformat/rtsp.c
@@ -1462,7 +1462,7 @@ redirect:
  "Pragma: no-cache\r\n"
  "Cache-Control: no-cache\r\n",
  sessioncookie);
-ff_http_set_headers(rt->rtsp_hd, headers);
+av_opt_set(rt->rtsp_hd->priv_data, "headers", headers, 0);
 
 /* complete the connection */
 if (ffurl_connect(rt->rtsp_hd)) {
@@ -1485,7 +1485,7 @@ redirect:
  "Content-Length: 32767\r\n"
  "Expires: Sun, 9 Jan 1972 00:00:00 GMT\r\n",
  sessioncookie);
-ff_http_set_headers(rt->rtsp_hd_out, headers);
+av_opt_set(rt->rtsp_hd_out->priv_data, "headers", headers, 0);
 av_opt_set(rt->rtsp_hd_out->priv_data, "chunksize", "-1", 0);
 
 /* Initialize the authentication state for the POST session. The HTTP

___
libav-commits mailing list
libav-commits@libav.org
https://lists.libav.org/mailman/listinfo/libav-commits

[libav-commits] mms: Set http custom headers via the AVOption

2011-11-10 Thread Martin Storsjö
Module: libav
Branch: master
Commit: 27fad11b5b0d2ae48f3ffe0a88d012bc8cdf90df

Author:Martin Storsjö 
Committer: Martin Storsjö 
Date:  Mon Nov  7 11:48:51 2011 +0200

mms: Set http custom headers via the AVOption

Signed-off-by: Martin Storsjö 

---

 libavformat/mmsh.c |5 +++--
 1 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/libavformat/mmsh.c b/libavformat/mmsh.c
index 0ce282c..cbce2f5 100644
--- a/libavformat/mmsh.c
+++ b/libavformat/mmsh.c
@@ -28,6 +28,7 @@
 #include 
 #include "libavutil/intreadwrite.h"
 #include "libavutil/avstring.h"
+#include "libavutil/opt.h"
 #include "internal.h"
 #include "mms.h"
 #include "asf.h"
@@ -245,7 +246,7 @@ static int mmsh_open(URLContext *h, const char *uri, int 
flags)
  CLIENTGUID
  "Connection: Close\r\n\r\n",
  host, port, mmsh->request_seq++);
-ff_http_set_headers(mms->mms_hd, headers);
+av_opt_set(mms->mms_hd->priv_data, "headers", headers, 0);
 
 err = ffurl_connect(mms->mms_hd);
 if (err) {
@@ -291,7 +292,7 @@ static int mmsh_open(URLContext *h, const char *uri, int 
flags)
 goto fail;
 }
 av_dlog(NULL, "out_buffer is %s", headers);
-ff_http_set_headers(mms->mms_hd, headers);
+av_opt_set(mms->mms_hd->priv_data, "headers", headers, 0);
 
 err = ffurl_connect(mms->mms_hd);
 if (err) {

___
libav-commits mailing list
libav-commits@libav.org
https://lists.libav.org/mailman/listinfo/libav-commits

[libav-commits] avio: Free URLContext private data allocated via AVOptions

2011-11-10 Thread Martin Storsjö
Module: libav
Branch: master
Commit: d10361b65856982fe17032590f490d494f1a01e4

Author:Martin Storsjö 
Committer: Martin Storsjö 
Date:  Wed Nov  9 00:48:40 2011 +0200

avio: Free URLContext private data allocated via AVOptions

Signed-off-by: Martin Storsjö 

---

 libavformat/avio.c |5 -
 1 files changed, 4 insertions(+), 1 deletions(-)

diff --git a/libavformat/avio.c b/libavformat/avio.c
index a954aa8..8e18549 100644
--- a/libavformat/avio.c
+++ b/libavformat/avio.c
@@ -335,8 +335,11 @@ int ffurl_close(URLContext *h)
 #if CONFIG_NETWORK
 ff_network_close();
 #endif
-if (h->prot->priv_data_size)
+if (h->prot->priv_data_size) {
+if (h->prot->priv_data_class)
+av_opt_free(h->priv_data);
 av_free(h->priv_data);
+}
 av_free(h);
 return ret;
 }

___
libav-commits mailing list
libav-commits@libav.org
https://lists.libav.org/mailman/listinfo/libav-commits

[libav-commits] http: Change an error log message to a warning

2011-11-10 Thread Martin Storsjö
Module: libav
Branch: master
Commit: 8ef79f42cadb0f6eefb033c62422d4c87f260cda

Author:Martin Storsjö 
Committer: Martin Storsjö 
Date:  Wed Nov  9 01:14:05 2011 +0200

http: Change an error log message to a warning

Signed-off-by: Martin Storsjö 

---

 libavformat/http.c |2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/libavformat/http.c b/libavformat/http.c
index 326ed0f..783ac6a 100644
--- a/libavformat/http.c
+++ b/libavformat/http.c
@@ -161,7 +161,7 @@ static int http_open(URLContext *h, const char *uri, int 
flags)
 if (s->headers) {
 int len = strlen(s->headers);
 if (len < 2 || strcmp("\r\n", s->headers + len - 2))
-av_log(h, AV_LOG_ERROR, "No trailing CRLF found in HTTP 
header.\n");
+av_log(h, AV_LOG_WARNING, "No trailing CRLF found in HTTP 
header.\n");
 }
 
 return http_open_cnx(h);

___
libav-commits mailing list
libav-commits@libav.org
https://lists.libav.org/mailman/listinfo/libav-commits

[libav-commits] http: Remove the now unused ff_http_set_headers custom function

2011-11-10 Thread Martin Storsjö
Module: libav
Branch: master
Commit: 7590061eb728f437a968989edf69fb7bf3fa67c3

Author:Martin Storsjö 
Committer: Martin Storsjö 
Date:  Mon Nov  7 11:46:29 2011 +0200

http: Remove the now unused ff_http_set_headers custom function

Signed-off-by: Martin Storsjö 

---

 libavformat/http.c |8 
 libavformat/http.h |   18 --
 2 files changed, 0 insertions(+), 26 deletions(-)

diff --git a/libavformat/http.c b/libavformat/http.c
index 71ada6c..326ed0f 100644
--- a/libavformat/http.c
+++ b/libavformat/http.c
@@ -67,14 +67,6 @@ static const AVClass httpcontext_class = {
 static int http_connect(URLContext *h, const char *path, const char *hoststr,
 const char *auth, int *new_location);
 
-void ff_http_set_headers(URLContext *h, const char *headers)
-{
-HTTPContext *s = h->priv_data;
-
-av_freep(&s->headers);
-s->headers = av_strdup(headers);
-}
-
 void ff_http_init_auth_state(URLContext *dest, const URLContext *src)
 {
 memcpy(&((HTTPContext*)dest->priv_data)->auth_state,
diff --git a/libavformat/http.h b/libavformat/http.h
index bd63a19..8dfb192 100644
--- a/libavformat/http.h
+++ b/libavformat/http.h
@@ -25,24 +25,6 @@
 #include "url.h"
 
 /**
- * Set custom HTTP headers.
- * A trailing CRLF ("\r\n") is required for custom headers.
- * Passing in an empty header string ("\0") will reset to defaults.
- *
- * The following headers can be overriden by custom values,
- * otherwise they will be set to their defaults.
- *  -User-Agent
- *  -Accept
- *  -Range
- *  -Host
- *  -Connection
- *
- * @param h URL context for this HTTP connection
- * @param headers the custom headers to set
- */
-void ff_http_set_headers(URLContext *h, const char *headers);
-
-/**
  * Initialize the authentication state based on another HTTP URLContext.
  * This can be used to pre-initialize the authentication parameters if
  * they are known beforehand, to avoid having to do an initial failing

___
libav-commits mailing list
libav-commits@libav.org
https://lists.libav.org/mailman/listinfo/libav-commits

[libav-commits] tls: use AVIO_FLAG_NONBLOCK instead of deprecated URL_FLAG_NONBLOCK

2011-11-10 Thread Anton Khirnov
Module: libav
Branch: master
Commit: 34ff0e2915005964bf9465a3ff3a405c6e45791b

Author:Anton Khirnov 
Committer: Anton Khirnov 
Date:  Sat Nov  5 12:48:02 2011 +0100

tls: use AVIO_FLAG_NONBLOCK instead of deprecated URL_FLAG_NONBLOCK

---

 libavformat/tls.c |2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/libavformat/tls.c b/libavformat/tls.c
index bd73feb..f89a717 100644
--- a/libavformat/tls.c
+++ b/libavformat/tls.c
@@ -91,7 +91,7 @@ static int do_tls_poll(URLContext *h, int ret)
 return AVERROR(EIO);
 }
 #endif
-if (h->flags & URL_FLAG_NONBLOCK)
+if (h->flags & AVIO_FLAG_NONBLOCK)
 return AVERROR(EAGAIN);
 while (1) {
 int n = poll(&p, 1, 100);

___
libav-commits mailing list
libav-commits@libav.org
https://lists.libav.org/mailman/listinfo/libav-commits


[libav-commits] http: use different classes for http and https.

2011-11-10 Thread Anton Khirnov
Module: libav
Branch: master
Commit: 3b384502f2950dd8f172060bfa74447a665af6d9

Author:Anton Khirnov 
Committer: Anton Khirnov 
Date:  Sat Nov  5 12:54:01 2011 +0100

http: use different classes for http and https.

---

 libavformat/http.c |   18 +++---
 1 files changed, 11 insertions(+), 7 deletions(-)

diff --git a/libavformat/http.c b/libavformat/http.c
index 783ac6a..5c47f1d 100644
--- a/libavformat/http.c
+++ b/libavformat/http.c
@@ -57,13 +57,17 @@ static const AVOption options[] = {
 {"headers", "custom HTTP headers, can override built in default headers", 
OFFSET(headers), AV_OPT_TYPE_STRING },
 {NULL}
 };
-static const AVClass httpcontext_class = {
-.class_name = "HTTP",
-.item_name  = av_default_item_name,
-.option = options,
-.version= LIBAVUTIL_VERSION_INT,
+#define HTTP_CLASS(flavor)\
+static const AVClass flavor ## _context_class = {\
+.class_name = #flavor,\
+.item_name  = av_default_item_name,\
+.option = options,\
+.version= LIBAVUTIL_VERSION_INT,\
 };
 
+HTTP_CLASS(http);
+HTTP_CLASS(https);
+
 static int http_connect(URLContext *h, const char *path, const char *hoststr,
 const char *auth, int *new_location);
 
@@ -518,7 +522,7 @@ URLProtocol ff_http_protocol = {
 .url_close   = http_close,
 .url_get_file_handle = http_get_file_handle,
 .priv_data_size  = sizeof(HTTPContext),
-.priv_data_class = &httpcontext_class,
+.priv_data_class = &http_context_class,
 };
 #endif
 #if CONFIG_HTTPS_PROTOCOL
@@ -531,6 +535,6 @@ URLProtocol ff_https_protocol = {
 .url_close   = http_close,
 .url_get_file_handle = http_get_file_handle,
 .priv_data_size  = sizeof(HTTPContext),
-.priv_data_class = &httpcontext_class,
+.priv_data_class = &https_context_class,
 };
 #endif

___
libav-commits mailing list
libav-commits@libav.org
https://lists.libav.org/mailman/listinfo/libav-commits


[libav-commits] crypto: add decoding flag to options.

2011-11-10 Thread Anton Khirnov
Module: libav
Branch: master
Commit: dc86ca1ab54c04f15214e6fc023d6dfc627aee34

Author:Anton Khirnov 
Committer: Anton Khirnov 
Date:  Sat Nov  5 14:07:13 2011 +0100

crypto: add decoding flag to options.

---

 libavformat/crypto.c |5 +++--
 1 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/libavformat/crypto.c b/libavformat/crypto.c
index 2f0e2bd..ea41747 100644
--- a/libavformat/crypto.c
+++ b/libavformat/crypto.c
@@ -45,9 +45,10 @@ typedef struct {
 } CryptoContext;
 
 #define OFFSET(x) offsetof(CryptoContext, x)
+#define D AV_OPT_FLAG_DECODING_PARAM
 static const AVOption options[] = {
-{"key", "AES decryption key", OFFSET(key), AV_OPT_TYPE_BINARY },
-{"iv",  "AES decryption initialization vector", OFFSET(iv),  
AV_OPT_TYPE_BINARY },
+{"key", "AES decryption key", OFFSET(key), AV_OPT_TYPE_BINARY, .flags = D 
},
+{"iv",  "AES decryption initialization vector", OFFSET(iv),  
AV_OPT_TYPE_BINARY, .flags = D },
 { NULL }
 };
 

___
libav-commits mailing list
libav-commits@libav.org
https://lists.libav.org/mailman/listinfo/libav-commits


[libav-commits] avconv: remove some codec-specific hacks

2011-11-10 Thread Anton Khirnov
Module: libav
Branch: master
Commit: 492cc1bef3d1b47b576cae8686b196368290ffe6

Author:Anton Khirnov 
Committer: Anton Khirnov 
Date:  Wed Nov  9 21:16:27 2011 +0100

avconv: remove some codec-specific hacks

The problem they are supposed to fix is handled in riff.c, so those
hacks are pointless.

---

 avconv.c |4 
 1 files changed, 0 insertions(+), 4 deletions(-)

diff --git a/avconv.c b/avconv.c
index a381fdb..eb7df9a 100644
--- a/avconv.c
+++ b/avconv.c
@@ -2046,10 +2046,6 @@ static int transcode_init(OutputFile *output_files,
 codec->frame_size = icodec->frame_size;
 codec->audio_service_type = icodec->audio_service_type;
 codec->block_align= icodec->block_align;
-if(codec->block_align == 1 && codec->codec_id == CODEC_ID_MP3)
-codec->block_align= 0;
-if(codec->codec_id == CODEC_ID_AC3)
-codec->block_align= 0;
 break;
 case AVMEDIA_TYPE_VIDEO:
 codec->pix_fmt = icodec->pix_fmt;

___
libav-commits mailing list
libav-commits@libav.org
https://lists.libav.org/mailman/listinfo/libav-commits


[libav-commits] http: Change the chunksize AVOption into chunked_post

2011-11-10 Thread Martin Storsjö
Module: libav
Branch: master
Commit: 6149485f6c6c2e600987a2759d97c546d4cf5da0

Author:Martin Storsjö 
Committer: Martin Storsjö 
Date:  Thu Nov 10 11:03:35 2011 +0200

http: Change the chunksize AVOption into chunked_post

The chunksize internal variable has two different uses - for
reading, it's the amount of data left of the current chunk
(or -1 if the server doesn't send data in chunked mode), where
it's only an internal state variable. For writing, it's used
to decide whether to enable chunked encoding (by default), by
using the value 0, or disable chunked encoding (value -1).

This, while consistent, doesn't make much sense to expose
as an AVOption. This splits the usage of the internal variable
into two variables, chunksize which is used for reading (as
before), and chunked_post which is the user-settable option,
with the values 0 and 1, where 1 is default.

Signed-off-by: Martin Storsjö 

---

 libavformat/http.c |9 +
 libavformat/rtsp.c |2 +-
 2 files changed, 6 insertions(+), 5 deletions(-)

diff --git a/libavformat/http.c b/libavformat/http.c
index 7cb6533..d5c02dd 100644
--- a/libavformat/http.c
+++ b/libavformat/http.c
@@ -49,13 +49,14 @@ typedef struct {
 HTTPAuthState auth_state;
 char *headers;
 int willclose;  /**< Set if the server correctly handles 
Connection: close and will close the connection after feeding us the content. */
+int chunked_post;
 } HTTPContext;
 
 #define OFFSET(x) offsetof(HTTPContext, x)
 #define D AV_OPT_FLAG_DECODING_PARAM
 #define E AV_OPT_FLAG_ENCODING_PARAM
 static const AVOption options[] = {
-{"chunksize", "use chunked transfer-encoding for posts, -1 disables it, 0 
enables it", OFFSET(chunksize), AV_OPT_TYPE_INT64, {.dbl = 0}, -1, 0, E }, /* 
Default to 0, for chunked POSTs */
+{"chunked_post", "use chunked transfer-encoding for posts", 
OFFSET(chunked_post), AV_OPT_TYPE_INT, {.dbl = 1}, 0, 1, E },
 {"headers", "custom HTTP headers, can override built in default headers", 
OFFSET(headers), AV_OPT_TYPE_STRING, { 0 }, 0, 0, D|E },
 {NULL}
 };
@@ -338,7 +339,7 @@ static int http_connect(URLContext *h, const char *path, 
const char *hoststr,
  "\r\n",
  post ? "POST" : "GET",
  path,
- post && s->chunksize >= 0 ? "Transfer-Encoding: chunked\r\n" : "",
+ post && s->chunked_post ? "Transfer-Encoding: chunked\r\n" : "",
  headers,
  authstr ? authstr : "");
 
@@ -435,7 +436,7 @@ static int http_write(URLContext *h, const uint8_t *buf, 
int size)
 char crlf[] = "\r\n";
 HTTPContext *s = h->priv_data;
 
-if (s->chunksize == -1) {
+if (!s->chunked_post) {
 /* non-chunked data is sent without any special encoding */
 return ffurl_write(s->hd, buf, size);
 }
@@ -461,7 +462,7 @@ static int http_close(URLContext *h)
 HTTPContext *s = h->priv_data;
 
 /* signal end of chunked encoding if used */
-if ((h->flags & AVIO_FLAG_WRITE) && s->chunksize != -1) {
+if ((h->flags & AVIO_FLAG_WRITE) && s->chunked_post) {
 ret = ffurl_write(s->hd, footer, sizeof(footer) - 1);
 ret = ret > 0 ? 0 : ret;
 }
diff --git a/libavformat/rtsp.c b/libavformat/rtsp.c
index 862582a..8f7bd37 100644
--- a/libavformat/rtsp.c
+++ b/libavformat/rtsp.c
@@ -1486,7 +1486,7 @@ redirect:
  "Expires: Sun, 9 Jan 1972 00:00:00 GMT\r\n",
  sessioncookie);
 av_opt_set(rt->rtsp_hd_out->priv_data, "headers", headers, 0);
-av_opt_set(rt->rtsp_hd_out->priv_data, "chunksize", "-1", 0);
+av_opt_set(rt->rtsp_hd_out->priv_data, "chunked_post", "0", 0);
 
 /* Initialize the authentication state for the POST session. The HTTP
  * protocol implementation doesn't properly handle multi-pass

___
libav-commits mailing list
libav-commits@libav.org
https://lists.libav.org/mailman/listinfo/libav-commits

[libav-commits] http: Add encoding/decoding flags to the AVOptions

2011-11-10 Thread Anton Khirnov
Module: libav
Branch: master
Commit: a2519280601209cc7f492e8e010efbaf1e0d7429

Author:Anton Khirnov 
Committer: Martin Storsjö 
Date:  Thu Nov 10 09:34:58 2011 +0100

http: Add encoding/decoding flags to the AVOptions

Signed-off-by: Martin Storsjö 

---

 libavformat/http.c |6 --
 1 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/libavformat/http.c b/libavformat/http.c
index 5c47f1d..7cb6533 100644
--- a/libavformat/http.c
+++ b/libavformat/http.c
@@ -52,9 +52,11 @@ typedef struct {
 } HTTPContext;
 
 #define OFFSET(x) offsetof(HTTPContext, x)
+#define D AV_OPT_FLAG_DECODING_PARAM
+#define E AV_OPT_FLAG_ENCODING_PARAM
 static const AVOption options[] = {
-{"chunksize", "use chunked transfer-encoding for posts, -1 disables it, 0 
enables it", OFFSET(chunksize), AV_OPT_TYPE_INT64, {.dbl = 0}, -1, 0 }, /* 
Default to 0, for chunked POSTs */
-{"headers", "custom HTTP headers, can override built in default headers", 
OFFSET(headers), AV_OPT_TYPE_STRING },
+{"chunksize", "use chunked transfer-encoding for posts, -1 disables it, 0 
enables it", OFFSET(chunksize), AV_OPT_TYPE_INT64, {.dbl = 0}, -1, 0, E }, /* 
Default to 0, for chunked POSTs */
+{"headers", "custom HTTP headers, can override built in default headers", 
OFFSET(headers), AV_OPT_TYPE_STRING, { 0 }, 0, 0, D|E },
 {NULL}
 };
 #define HTTP_CLASS(flavor)\

___
libav-commits mailing list
libav-commits@libav.org
https://lists.libav.org/mailman/listinfo/libav-commits

[libav-commits] sunrast: Check for invalid/corrupted bitstream

2011-11-10 Thread Laurent Aimar
Module: libav
Branch: master
Commit: 2305742b2a0fd64cccbdfe12c9e90555c8bb798e

Author:Laurent Aimar 
Committer: Janne Grunau 
Date:  Tue Sep 27 22:15:32 2011 +

sunrast: Check for invalid/corrupted bitstream

Signed-off-by: Janne Grunau 

---

 libavcodec/sunrast.c |   10 ++
 1 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/libavcodec/sunrast.c b/libavcodec/sunrast.c
index 9ec1df8..455619e 100644
--- a/libavcodec/sunrast.c
+++ b/libavcodec/sunrast.c
@@ -68,21 +68,25 @@ static int sunrast_decode_frame(AVCodecContext *avctx, void 
*data,
 type  = AV_RB32(buf+20);
 maptype   = AV_RB32(buf+24);
 maplength = AV_RB32(buf+28);
+buf  += 32;
 
 if (type == RT_FORMAT_TIFF || type == RT_FORMAT_IFF) {
 av_log(avctx, AV_LOG_ERROR, "unsupported (compression) type\n");
 return -1;
 }
-if (type > RT_FORMAT_IFF) {
+if (type < RT_OLD || type > RT_FORMAT_IFF) {
 av_log(avctx, AV_LOG_ERROR, "invalid (compression) type\n");
 return -1;
 }
+if (av_image_check_size(w, h, 0, avctx)) {
+av_log(avctx, AV_LOG_ERROR, "invalid image size\n");
+return -1;
+}
 if (maptype & ~1) {
 av_log(avctx, AV_LOG_ERROR, "invalid colormap type\n");
 return -1;
 }
 
-buf += 32;
 
 switch (depth) {
 case 1:
@@ -102,8 +106,6 @@ static int sunrast_decode_frame(AVCodecContext *avctx, void 
*data,
 if (p->data[0])
 avctx->release_buffer(avctx, p);
 
-if (av_image_check_size(w, h, 0, avctx))
-return -1;
 if (w != avctx->width || h != avctx->height)
 avcodec_set_dimensions(avctx, w, h);
 if (avctx->get_buffer(avctx, p) < 0) {

___
libav-commits mailing list
libav-commits@libav.org
https://lists.libav.org/mailman/listinfo/libav-commits


[libav-commits] http: Don't add a Range: bytes=0- header for POST

2011-11-10 Thread Martin Storsjö
Module: libav
Branch: master
Commit: f2d0015531a05587de87575ff73c95b1f95b6df7

Author:Martin Storsjö 
Committer: Martin Storsjö 
Date:  Thu Nov 10 11:09:26 2011 +0200

http: Don't add a Range: bytes=0- header for POST

That header simply doesn't make sense in that context.

Signed-off-by: Martin Storsjö 

---

 libavformat/http.c |2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/libavformat/http.c b/libavformat/http.c
index d5c02dd..83ffc0b 100644
--- a/libavformat/http.c
+++ b/libavformat/http.c
@@ -317,7 +317,7 @@ static int http_connect(URLContext *h, const char *path, 
const char *hoststr,
 if (!has_header(s->headers, "\r\nAccept: "))
 len += av_strlcpy(headers + len, "Accept: */*\r\n",
   sizeof(headers) - len);
-if (!has_header(s->headers, "\r\nRange: "))
+if (!has_header(s->headers, "\r\nRange: ") && !post)
 len += av_strlcatf(headers + len, sizeof(headers) - len,
"Range: bytes=%"PRId64"-\r\n", s->off);
 if (!has_header(s->headers, "\r\nConnection: "))

___
libav-commits mailing list
libav-commits@libav.org
https://lists.libav.org/mailman/listinfo/libav-commits

[libav-commits] vorbisdec: remove unneeded buf_size==0 check

2011-11-10 Thread Justin Ruggles
Module: libav
Branch: master
Commit: e551a6f49a13f2e992c42bc00a8b45ad636e52ad

Author:Justin Ruggles 
Committer: Justin Ruggles 
Date:  Sun Oct 30 18:40:21 2011 -0400

vorbisdec: remove unneeded buf_size==0 check

---

 libavcodec/vorbisdec.c |3 ---
 1 files changed, 0 insertions(+), 3 deletions(-)

diff --git a/libavcodec/vorbisdec.c b/libavcodec/vorbisdec.c
index 8c6f91e..e79feb9 100644
--- a/libavcodec/vorbisdec.c
+++ b/libavcodec/vorbisdec.c
@@ -1622,9 +1622,6 @@ static int vorbis_decode_frame(AVCodecContext *avccontext,
 const float *channel_ptrs[255];
 int i, len, out_size;
 
-if (!buf_size)
-return 0;
-
 av_dlog(NULL, "packet length %d \n", buf_size);
 
 init_get_bits(gb, buf, buf_size*8);

___
libav-commits mailing list
libav-commits@libav.org
https://lists.libav.org/mailman/listinfo/libav-commits


[libav-commits] vorbisdec: remove AVCODEC_MAX_AUDIO_FRAME_SIZE check

2011-11-10 Thread Justin Ruggles
Module: libav
Branch: master
Commit: 41899b9acb92dd59a0eca0f86cac4c49afbc1b79

Author:Justin Ruggles 
Committer: Justin Ruggles 
Date:  Sun Oct 30 18:41:00 2011 -0400

vorbisdec: remove AVCODEC_MAX_AUDIO_FRAME_SIZE check

The user could provide a larger buffer, which is already checked separately
before writing output.

---

 libavcodec/vorbisdec.c |6 --
 1 files changed, 0 insertions(+), 6 deletions(-)

diff --git a/libavcodec/vorbisdec.c b/libavcodec/vorbisdec.c
index e79feb9..b202249 100644
--- a/libavcodec/vorbisdec.c
+++ b/libavcodec/vorbisdec.c
@@ -936,12 +936,6 @@ static int vorbis_parse_id_hdr(vorbis_context *vc)
 av_log(vc->avccontext, AV_LOG_ERROR, " Vorbis id header packet corrupt 
(illegal blocksize). \n");
 return AVERROR_INVALIDDATA;
 }
-// output format int16
-if (vc->blocksize[1] / 2 * vc->audio_channels * 2 > 
AVCODEC_MAX_AUDIO_FRAME_SIZE) {
-av_log(vc->avccontext, AV_LOG_ERROR, "Vorbis channel count makes "
-   "output packets too large.\n");
-return AVERROR_PATCHWELCOME;
-}
 vc->win[0] = ff_vorbis_vwin[bl0 - 6];
 vc->win[1] = ff_vorbis_vwin[bl1 - 6];
 

___
libav-commits mailing list
libav-commits@libav.org
https://lists.libav.org/mailman/listinfo/libav-commits


[libav-commits] truespeech: use memmove() in truespeech_update_filters()

2011-11-10 Thread Justin Ruggles
Module: libav
Branch: master
Commit: 59f4d1b8bb4eacfb5b678eda93c1fa30b7823cb4

Author:Justin Ruggles 
Committer: Justin Ruggles 
Date:  Sat Oct 29 18:25:40 2011 -0400

truespeech: use memmove() in truespeech_update_filters()

---

 libavcodec/truespeech.c |3 +--
 1 files changed, 1 insertions(+), 2 deletions(-)

diff --git a/libavcodec/truespeech.c b/libavcodec/truespeech.c
index 7747fca..b7a2aa6 100644
--- a/libavcodec/truespeech.c
+++ b/libavcodec/truespeech.c
@@ -233,8 +233,7 @@ static void truespeech_update_filters(TSContext *dec, 
int16_t *out, int quart)
 {
 int i;
 
-for(i = 0; i < 86; i++)
-dec->filtbuf[i] = dec->filtbuf[i + 60];
+memmove(dec->filtbuf, &dec->filtbuf[60], 86 * sizeof(*dec->filtbuf));
 for(i = 0; i < 60; i++){
 dec->filtbuf[i + 86] = out[i] + dec->newvec[i] - (dec->newvec[i] >> 3);
 out[i] += dec->newvec[i];

___
libav-commits mailing list
libav-commits@libav.org
https://lists.libav.org/mailman/listinfo/libav-commits


[libav-commits] apedec: remove unneeded entropy decoder normalization.

2011-11-10 Thread Justin Ruggles
Module: libav
Branch: master
Commit: ad17207b517508c95aa9bd1f67e7beb6d09af52f

Author:Justin Ruggles 
Committer: Justin Ruggles 
Date:  Mon Oct 31 14:57:04 2011 -0400

apedec: remove unneeded entropy decoder normalization.

The decoder already skips data at the end of the packet without this.
Also remove 2 APEContext fields that were only used for the end-of-frame
normalization.

---

 libavcodec/apedec.c |   12 +---
 1 files changed, 1 insertions(+), 11 deletions(-)

diff --git a/libavcodec/apedec.c b/libavcodec/apedec.c
index e906903..0619358 100644
--- a/libavcodec/apedec.c
+++ b/libavcodec/apedec.c
@@ -140,8 +140,6 @@ typedef struct APEContext {
 
 uint32_t CRC;///< frame CRC
 int frameflags;  ///< frame flags
-int currentframeblocks;  ///< samples (per channel) in 
current frame
-int blocksdecoded;   ///< count of decoded samples in 
current frame
 APEPredictor predictor;  ///< predictor used for final 
reconstruction
 
 int32_t decoded0[BLOCKS_PER_LOOP];   ///< decoded data for the first 
channel
@@ -457,8 +455,6 @@ static void entropy_decode(APEContext *ctx, int 
blockstodecode, int stereo)
 int32_t *decoded0 = ctx->decoded0;
 int32_t *decoded1 = ctx->decoded1;
 
-ctx->blocksdecoded = blockstodecode;
-
 if (ctx->frameflags & APE_FRAMECODE_STEREO_SILENCE) {
 /* We are pure silence, just memset the output buffer. */
 memset(decoded0, 0, blockstodecode * sizeof(int32_t));
@@ -470,9 +466,6 @@ static void entropy_decode(APEContext *ctx, int 
blockstodecode, int stereo)
 *decoded1++ = ape_decode_value(ctx, &ctx->riceX);
 }
 }
-
-if (ctx->blocksdecoded == ctx->currentframeblocks)
-range_dec_normalize(ctx);   /* normalize to use up all bytes */
 }
 
 static int init_entropy_decoder(APEContext *ctx)
@@ -492,9 +485,6 @@ static int init_entropy_decoder(APEContext *ctx)
 ctx->frameflags = bytestream_get_be32(&ctx->ptr);
 }
 
-/* Keep a count of the blocks decoded in this frame */
-ctx->blocksdecoded = 0;
-
 /* Initialize the rice structs */
 ctx->riceX.k = 10;
 ctx->riceX.ksum = (1 << ctx->riceX.k) * 16;
@@ -873,7 +863,7 @@ static int ape_decode_frame(AVCodecContext *avctx,
 av_log(avctx, AV_LOG_ERROR, "Invalid sample count: %u.\n", 
nblocks);
 return AVERROR_INVALIDDATA;
 }
-s->currentframeblocks = s->samples = nblocks;
+s->samples = nblocks;
 
 memset(s->decoded0,  0, sizeof(s->decoded0));
 memset(s->decoded1,  0, sizeof(s->decoded1));

___
libav-commits mailing list
libav-commits@libav.org
https://lists.libav.org/mailman/listinfo/libav-commits


[libav-commits] vorbisdec: return proper error codes instead of made-up ones

2011-11-10 Thread Justin Ruggles
Module: libav
Branch: master
Commit: f666276fa61623f4d6fa97b99d6b336ec0eba8c3

Author:Justin Ruggles 
Committer: Justin Ruggles 
Date:  Sun Oct 30 18:38:19 2011 -0400

vorbisdec: return proper error codes instead of made-up ones

---

 libavcodec/vorbisdec.c |  113 ++--
 1 files changed, 61 insertions(+), 52 deletions(-)

diff --git a/libavcodec/vorbisdec.c b/libavcodec/vorbisdec.c
index 52c2652..8c6f91e 100644
--- a/libavcodec/vorbisdec.c
+++ b/libavcodec/vorbisdec.c
@@ -164,7 +164,7 @@ static const char idx_err_str[] = "Index value %d out of 
range (0 - %d) for %s a
 av_log(vc->avccontext, AV_LOG_ERROR,\
idx_err_str,\
(int)(idx), (int)(limit - 1), #idx, __FILE__, __LINE__);\
-return -1;\
+return AVERROR_INVALIDDATA;\
 }
 #define GET_VALIDATED_INDEX(idx, bits, limit) \
 {\
@@ -237,6 +237,7 @@ static int vorbis_parse_setup_hdr_codebooks(vorbis_context 
*vc)
 uint32_t *tmp_vlc_codes;
 GetBitContext *gb = &vc->gb;
 uint16_t *codebook_multiplicands;
+int ret = 0;
 
 vc->codebook_count = get_bits(gb, 8) + 1;
 
@@ -256,6 +257,7 @@ static int vorbis_parse_setup_hdr_codebooks(vorbis_context 
*vc)
 if (get_bits(gb, 24) != 0x564342) {
 av_log(vc->avccontext, AV_LOG_ERROR,
" %u. Codebook setup data corrupt.\n", cb);
+ret = AVERROR_INVALIDDATA;
 goto error;
 }
 
@@ -264,6 +266,7 @@ static int vorbis_parse_setup_hdr_codebooks(vorbis_context 
*vc)
 av_log(vc->avccontext, AV_LOG_ERROR,
" %u. Codebook's dimension is invalid (%d).\n",
cb, codebook_setup->dimensions);
+ret = AVERROR_INVALIDDATA;
 goto error;
 }
 entries = get_bits(gb, 24);
@@ -271,6 +274,7 @@ static int vorbis_parse_setup_hdr_codebooks(vorbis_context 
*vc)
 av_log(vc->avccontext, AV_LOG_ERROR,
" %u. Codebook has too many entries (%u).\n",
cb, entries);
+ret = AVERROR_INVALIDDATA;
 goto error;
 }
 
@@ -328,6 +332,7 @@ static int vorbis_parse_setup_hdr_codebooks(vorbis_context 
*vc)
 }
 if (current_entry>used_entries) {
 av_log(vc->avccontext, AV_LOG_ERROR, " More codelengths than 
codes in codebook. \n");
+ret = AVERROR_INVALIDDATA;
 goto error;
 }
 }
@@ -395,17 +400,20 @@ static int 
vorbis_parse_setup_hdr_codebooks(vorbis_context *vc)
 }
 if (j != used_entries) {
 av_log(vc->avccontext, AV_LOG_ERROR, "Bug in codevector vector 
building code. \n");
+ret = AVERROR_INVALIDDATA;
 goto error;
 }
 entries = used_entries;
 } else if (codebook_setup->lookup_type >= 2) {
 av_log(vc->avccontext, AV_LOG_ERROR, "Codebook lookup type not 
supported. \n");
+ret = AVERROR_INVALIDDATA;
 goto error;
 }
 
 // Initialize VLC table
 if (ff_vorbis_len2vlc(tmp_vlc_bits, tmp_vlc_codes, entries)) {
 av_log(vc->avccontext, AV_LOG_ERROR, " Invalid code lengths while 
generating vlcs. \n");
+ret = AVERROR_INVALIDDATA;
 goto error;
 }
 codebook_setup->maxdepth = 0;
@@ -420,7 +428,11 @@ static int vorbis_parse_setup_hdr_codebooks(vorbis_context 
*vc)
 
 codebook_setup->maxdepth = 
(codebook_setup->maxdepth+codebook_setup->nb_bits - 1) / 
codebook_setup->nb_bits;
 
-if (init_vlc(&codebook_setup->vlc, codebook_setup->nb_bits, entries, 
tmp_vlc_bits, sizeof(*tmp_vlc_bits), sizeof(*tmp_vlc_bits), tmp_vlc_codes, 
sizeof(*tmp_vlc_codes), sizeof(*tmp_vlc_codes), INIT_VLC_LE)) {
+if ((ret = init_vlc(&codebook_setup->vlc, codebook_setup->nb_bits,
+entries, tmp_vlc_bits, sizeof(*tmp_vlc_bits),
+sizeof(*tmp_vlc_bits), tmp_vlc_codes,
+sizeof(*tmp_vlc_codes), sizeof(*tmp_vlc_codes),
+INIT_VLC_LE))) {
 av_log(vc->avccontext, AV_LOG_ERROR, " Error generating vlc 
tables. \n");
 goto error;
 }
@@ -436,7 +448,7 @@ error:
 av_free(tmp_vlc_bits);
 av_free(tmp_vlc_codes);
 av_free(codebook_multiplicands);
-return -1;
+return ret;
 }
 
 // Process time domain transforms part (unused in Vorbis I)
@@ -454,7 +466,7 @@ static int 
vorbis_parse_setup_hdr_tdtransforms(vorbis_context *vc)
 
 if (vorbis_tdtransform) {
 av_log(vc->avccontext, AV_LOG_ERROR, "Vorbis time domain transform 
data nonzero. \n");
-return -1;
+return AVERROR_INVALIDDATA;
 }
 }
 return 0;
@@ -546,7 +558,7 @@ static int vorbis_parse_setup_hdr_floors(vorbis_context *vc)
 av_log(vc->avccontext, AV_LOG_ERROR,
   

[libav-commits] apedec: do not needlessly copy s->samples to nblocks.

2011-11-10 Thread Justin Ruggles
Module: libav
Branch: master
Commit: de157f2118eeebedd28f4fd1ed448787abd837f8

Author:Justin Ruggles 
Committer: Justin Ruggles 
Date:  Mon Oct 31 15:10:19 2011 -0400

apedec: do not needlessly copy s->samples to nblocks.

also move nblocks to the local scope where it is used.

---

 libavcodec/apedec.c |6 ++
 1 files changed, 2 insertions(+), 4 deletions(-)

diff --git a/libavcodec/apedec.c b/libavcodec/apedec.c
index 1567025..72b4112 100644
--- a/libavcodec/apedec.c
+++ b/libavcodec/apedec.c
@@ -814,7 +814,6 @@ static int ape_decode_frame(AVCodecContext *avctx,
 int buf_size = avpkt->size;
 APEContext *s = avctx->priv_data;
 int16_t *samples = data;
-uint32_t nblocks;
 int i;
 int blockstodecode, out_size;
 int bytes_used;
@@ -824,7 +823,7 @@ static int ape_decode_frame(AVCodecContext *avctx,
 av_assert0(s->samples >= 0);
 
 if(!s->samples){
-uint32_t offset;
+uint32_t nblocks, offset;
 void *tmp_data;
 
 if (buf_size < 8) {
@@ -874,8 +873,7 @@ static int ape_decode_frame(AVCodecContext *avctx,
 return buf_size;
 }
 
-nblocks = s->samples;
-blockstodecode = FFMIN(BLOCKS_PER_LOOP, nblocks);
+blockstodecode = FFMIN(BLOCKS_PER_LOOP, s->samples);
 
 out_size = blockstodecode * avctx->channels *
av_get_bytes_per_sample(avctx->sample_fmt);

___
libav-commits mailing list
libav-commits@libav.org
https://lists.libav.org/mailman/listinfo/libav-commits


[libav-commits] atrac1: use correct context for av_log()

2011-11-10 Thread Justin Ruggles
Module: libav
Branch: master
Commit: 164fca39bdd59896b43ea4a4df31195ac0988fa5

Author:Justin Ruggles 
Committer: Justin Ruggles 
Date:  Wed Nov  2 12:06:04 2011 -0400

atrac1: use correct context for av_log()

---

 libavcodec/atrac1.c |2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/libavcodec/atrac1.c b/libavcodec/atrac1.c
index ef5156c..770b1bf 100644
--- a/libavcodec/atrac1.c
+++ b/libavcodec/atrac1.c
@@ -284,7 +284,7 @@ static int atrac1_decode_frame(AVCodecContext *avctx, void 
*data,
 
 
 if (buf_size < 212 * q->channels) {
-av_log(q,AV_LOG_ERROR,"Not enough data to decode!\n");
+av_log(avctx, AV_LOG_ERROR, "Not enough data to decode!\n");
 return AVERROR_INVALIDDATA;
 }
 

___
libav-commits mailing list
libav-commits@libav.org
https://lists.libav.org/mailman/listinfo/libav-commits


[libav-commits] apedec: check output buffer size after calculating actual output size

2011-11-10 Thread Justin Ruggles
Module: libav
Branch: master
Commit: 4315c7d35aa946fb3a0da9a30f08fb4e0ca8edfb

Author:Justin Ruggles 
Committer: Justin Ruggles 
Date:  Mon Oct 31 15:03:14 2011 -0400

apedec: check output buffer size after calculating actual output size

---

 libavcodec/apedec.c |   18 ++
 1 files changed, 10 insertions(+), 8 deletions(-)

diff --git a/libavcodec/apedec.c b/libavcodec/apedec.c
index 0619358..1567025 100644
--- a/libavcodec/apedec.c
+++ b/libavcodec/apedec.c
@@ -816,15 +816,9 @@ static int ape_decode_frame(AVCodecContext *avctx,
 int16_t *samples = data;
 uint32_t nblocks;
 int i;
-int blockstodecode;
+int blockstodecode, out_size;
 int bytes_used;
 
-/* should not happen but who knows */
-if (BLOCKS_PER_LOOP * 2 * avctx->channels > *data_size) {
-av_log (avctx, AV_LOG_ERROR, "Output buffer is too small.\n");
-return AVERROR(EINVAL);
-}
-
 /* this should never be negative, but bad things will happen if it is, so
check it just to make sure. */
 av_assert0(s->samples >= 0);
@@ -883,6 +877,13 @@ static int ape_decode_frame(AVCodecContext *avctx,
 nblocks = s->samples;
 blockstodecode = FFMIN(BLOCKS_PER_LOOP, nblocks);
 
+out_size = blockstodecode * avctx->channels *
+   av_get_bytes_per_sample(avctx->sample_fmt);
+if (*data_size < out_size) {
+av_log(avctx, AV_LOG_ERROR, "Output buffer is too small.\n");
+return AVERROR(EINVAL);
+}
+
 s->error=0;
 
 if ((s->channels == 1) || (s->frameflags & APE_FRAMECODE_PSEUDO_STEREO))
@@ -905,9 +906,10 @@ static int ape_decode_frame(AVCodecContext *avctx,
 
 s->samples -= blockstodecode;
 
-*data_size = blockstodecode * 2 * s->channels;
 bytes_used = s->samples ? s->ptr - s->last_ptr : buf_size;
 s->last_ptr = s->ptr;
+
+*data_size = out_size;
 return bytes_used;
 }
 

___
libav-commits mailing list
libav-commits@libav.org
https://lists.libav.org/mailman/listinfo/libav-commits


[libav-commits] apedec: consume the whole packet when copying to the decoder buffer.

2011-11-10 Thread Justin Ruggles
Module: libav
Branch: master
Commit: c298b2b8db2e387afb5de94ed43deac1deb607a9

Author:Justin Ruggles 
Committer: Justin Ruggles 
Date:  Mon Oct 31 14:49:34 2011 -0400

apedec: consume the whole packet when copying to the decoder buffer.

This avoids artifically consuming a partial packet but ignoring remaining data
in subsequent calls.

---

 libavcodec/apedec.c |   16 +---
 1 files changed, 9 insertions(+), 7 deletions(-)

diff --git a/libavcodec/apedec.c b/libavcodec/apedec.c
index 72b4112..6c3d29e 100644
--- a/libavcodec/apedec.c
+++ b/libavcodec/apedec.c
@@ -155,7 +155,6 @@ typedef struct APEContext {
 uint8_t *data;   ///< current frame data
 uint8_t *data_end;   ///< frame data end
 const uint8_t *ptr;  ///< current position in frame 
data
-const uint8_t *last_ptr; ///< position where last 
4608-sample block ended
 
 int error;
 } APEContext;
@@ -816,7 +815,7 @@ static int ape_decode_frame(AVCodecContext *avctx,
 int16_t *samples = data;
 int i;
 int blockstodecode, out_size;
-int bytes_used;
+int bytes_used = 0;
 
 /* this should never be negative, but bad things will happen if it is, so
check it just to make sure. */
@@ -826,6 +825,10 @@ static int ape_decode_frame(AVCodecContext *avctx,
 uint32_t nblocks, offset;
 void *tmp_data;
 
+if (!buf_size) {
+*data_size = 0;
+return 0;
+}
 if (buf_size < 8) {
 av_log(avctx, AV_LOG_ERROR, "Packet is too small\n");
 return AVERROR_INVALIDDATA;
@@ -836,7 +839,7 @@ static int ape_decode_frame(AVCodecContext *avctx,
 return AVERROR(ENOMEM);
 s->data = tmp_data;
 s->dsp.bswap_buf((uint32_t*)s->data, (const uint32_t*)buf, buf_size >> 
2);
-s->ptr = s->last_ptr = s->data;
+s->ptr = s->data;
 s->data_end = s->data + buf_size;
 
 nblocks = bytestream_get_be32(&s->ptr);
@@ -866,6 +869,8 @@ static int ape_decode_frame(AVCodecContext *avctx,
 av_log(avctx, AV_LOG_ERROR, "Error reading frame header\n");
 return AVERROR_INVALIDDATA;
 }
+
+bytes_used = buf_size;
 }
 
 if (!s->data) {
@@ -904,9 +909,6 @@ static int ape_decode_frame(AVCodecContext *avctx,
 
 s->samples -= blockstodecode;
 
-bytes_used = s->samples ? s->ptr - s->last_ptr : buf_size;
-s->last_ptr = s->ptr;
-
 *data_size = out_size;
 return bytes_used;
 }
@@ -925,7 +927,7 @@ AVCodec ff_ape_decoder = {
 .init   = ape_decode_init,
 .close  = ape_decode_close,
 .decode = ape_decode_frame,
-.capabilities = CODEC_CAP_SUBFRAMES,
+.capabilities   = CODEC_CAP_SUBFRAMES | CODEC_CAP_DELAY,
 .flush = ape_flush,
 .long_name = NULL_IF_CONFIG_SMALL("Monkey's Audio"),
 };

___
libav-commits mailing list
libav-commits@libav.org
https://lists.libav.org/mailman/listinfo/libav-commits


[libav-commits] mpc7: Fix memset call in mpc7_decode_frame function

2011-11-10 Thread Alex Converse
Module: libav
Branch: master
Commit: 88b2436911ea9d629d0bc380afc6570eecef84bd

Author:Alex Converse 
Committer: Alex Converse 
Date:  Wed Nov  9 13:40:44 2011 -0800

mpc7: Fix memset call in mpc7_decode_frame function

---

 libavcodec/mpc7.c |2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/libavcodec/mpc7.c b/libavcodec/mpc7.c
index 6f79c7b..60b9f52 100644
--- a/libavcodec/mpc7.c
+++ b/libavcodec/mpc7.c
@@ -200,7 +200,7 @@ static int mpc7_decode_frame(AVCodecContext * avctx,
 int off, out_size;
 int bits_used, bits_avail;
 
-memset(bands, 0, sizeof(bands));
+memset(bands, 0, sizeof(*bands) * (c->maxbands + 1));
 if(buf_size <= 4){
 av_log(avctx, AV_LOG_ERROR, "Too small buffer passed (%i bytes)\n", 
buf_size);
 return AVERROR(EINVAL);

___
libav-commits mailing list
libav-commits@libav.org
https://lists.libav.org/mailman/listinfo/libav-commits


[libav-commits] aes: Avoid illegal read and don't generate more key than we use.

2011-11-10 Thread Alex Converse
Module: libav
Branch: master
Commit: c9e5ac3380c8a8cebea222dbb3c3d95a9a93ee17

Author:Alex Converse 
Committer: Alex Converse 
Date:  Thu Nov  3 18:13:57 2011 -0700

aes: Avoid illegal read and don't generate more key than we use.

---

 libavutil/aes.c |8 
 1 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/libavutil/aes.c b/libavutil/aes.c
index ace317f..0301e03 100644
--- a/libavutil/aes.c
+++ b/libavutil/aes.c
@@ -222,11 +222,9 @@ int av_aes_init(AVAES *a, const uint8_t *key, int 
key_bits, int decrypt)
 a->rounds = rounds;
 
 memcpy(tk, key, KC * 4);
+memcpy(a->round_key[0].u8, key, KC * 4);
 
-for (t = 0; t < (rounds + 1) * 16;) {
-memcpy(a->round_key[0].u8 + t, tk, KC * 4);
-t += KC * 4;
-
+for (t = KC * 4; t < (rounds + 1) * 16; t += KC * 4) {
 for (i = 0; i < 4; i++)
 tk[0][i] ^= sbox[tk[KC - 1][(i + 1) & 3]];
 tk[0][0] ^= rcon[rconpointer++];
@@ -239,6 +237,8 @@ int av_aes_init(AVAES *a, const uint8_t *key, int key_bits, 
int decrypt)
 for (i = 0; i < 4; i++)
 tk[j][i] ^= sbox[tk[j - 1][i]];
 }
+
+memcpy(a->round_key[0].u8 + t, tk, KC * 4);
 }
 
 if (decrypt) {

___
libav-commits mailing list
libav-commits@libav.org
https://lists.libav.org/mailman/listinfo/libav-commits


[libav-commits] tls: Use the URLContext as logging context

2011-11-10 Thread Martin Storsjö
Module: libav
Branch: master
Commit: 371d15ec361168d7f0d43b6f717da231c3b9e433

Author:Martin Storsjö 
Committer: Martin Storsjö 
Date:  Thu Nov 10 17:52:38 2011 +0200

tls: Use the URLContext as logging context

Signed-off-by: Martin Storsjö 

---

 libavformat/tls.c |   10 +-
 1 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/libavformat/tls.c b/libavformat/tls.c
index f89a717..8211e88 100644
--- a/libavformat/tls.c
+++ b/libavformat/tls.c
@@ -73,7 +73,7 @@ static int do_tls_poll(URLContext *h, int ret)
 struct pollfd p = { c->fd, 0, 0 };
 #if CONFIG_GNUTLS
 if (ret != GNUTLS_E_AGAIN && ret != GNUTLS_E_INTERRUPTED) {
-av_log(NULL, AV_LOG_ERROR, "%s\n", gnutls_strerror(ret));
+av_log(h, AV_LOG_ERROR, "%s\n", gnutls_strerror(ret));
 return AVERROR(EIO);
 }
 if (gnutls_record_get_direction(c->session))
@@ -87,7 +87,7 @@ static int do_tls_poll(URLContext *h, int ret)
 } else if (ret == SSL_ERROR_WANT_WRITE) {
 p.events = POLLOUT;
 } else {
-av_log(NULL, AV_LOG_ERROR, "%s\n", ERR_error_string(ERR_get_error(), 
NULL));
+av_log(h, AV_LOG_ERROR, "%s\n", ERR_error_string(ERR_get_error(), 
NULL));
 return AVERROR(EIO);
 }
 #endif
@@ -148,13 +148,13 @@ static int tls_open(URLContext *h, const char *uri, int 
flags)
 #elif CONFIG_OPENSSL
 c->ctx = SSL_CTX_new(SSLv3_client_method());
 if (!c->ctx) {
-av_log(NULL, AV_LOG_ERROR, "%s\n", ERR_error_string(ERR_get_error(), 
NULL));
+av_log(h, AV_LOG_ERROR, "%s\n", ERR_error_string(ERR_get_error(), 
NULL));
 ret = AVERROR(EIO);
 goto fail;
 }
 c->ssl = SSL_new(c->ctx);
 if (!c->ssl) {
-av_log(NULL, AV_LOG_ERROR, "%s\n", ERR_error_string(ERR_get_error(), 
NULL));
+av_log(h, AV_LOG_ERROR, "%s\n", ERR_error_string(ERR_get_error(), 
NULL));
 ret = AVERROR(EIO);
 goto fail;
 }
@@ -166,7 +166,7 @@ static int tls_open(URLContext *h, const char *uri, int 
flags)
 if (ret > 0)
 break;
 if (ret == 0) {
-av_log(NULL, AV_LOG_ERROR, "Unable to negotiate TLS/SSL 
session\n");
+av_log(h, AV_LOG_ERROR, "Unable to negotiate TLS/SSL session\n");
 ret = AVERROR(EIO);
 goto fail;
 }

___
libav-commits mailing list
libav-commits@libav.org
https://lists.libav.org/mailman/listinfo/libav-commits

[libav-commits] doc: update libavfilter documentation

2011-11-10 Thread Luca Barbato
Module: libav
Branch: master
Commit: 299809defb05eae093cb72da97dfbbb7e17e08fe

Author:Luca Barbato 
Committer: Luca Barbato 
Date:  Tue Nov  8 11:37:58 2011 -0800

doc: update libavfilter documentation

Update the reference to the conversion tool to use avconv and
make sure the example line works as supposed.
Remove the paragraph pointing to the svn repo

---

 doc/libavfilter.texi |   19 +++
 1 files changed, 3 insertions(+), 16 deletions(-)

diff --git a/doc/libavfilter.texi b/doc/libavfilter.texi
index 172b7fc..b452294 100644
--- a/doc/libavfilter.texi
+++ b/doc/libavfilter.texi
@@ -14,18 +14,6 @@
 Libavfilter is the filtering API of Libav. It is the substitute of the
 now deprecated 'vhooks' and started as a Google Summer of Code project.
 
-Integrating libavfilter into the main Libav repository is a work in
-progress. If you wish to try the unfinished development code of
-libavfilter then check it out from the libavfilter repository into
-some directory of your choice by:
-
-@example
-   svn checkout svn://svn.libav.org/soc/libavfilter
-@end example
-
-And then read the README file in the top directory to learn how to
-integrate it into ffmpeg and avplay.
-
 But note that there may still be serious bugs in the code and its API
 and ABI should not be considered stable yet!
 
@@ -48,15 +36,14 @@ and the vflip filter before merging it back with the other 
stream by
 overlaying it on top. You can use the following command to achieve this:
 
 @example
-./ffmpeg -i in.avi -s 240x320 -vf "[in] split [T1], fifo, [T2] overlay= 0:240 
[out]; [T1] fifo, crop=0:0:-1:240, vflip [T2]
+./avconv -i input -vf "[in] split [T1], fifo, [T2] overlay=0:H/2 [out]; [T1] 
fifo, crop=iw:ih/2:0:ih/2, vflip [T2]" output
 @end example
 
-where input_video.avi has a vertical resolution of 480 pixels. The
-result will be that in output the top half of the video is mirrored
+The result will be that in output the top half of the video is mirrored
 onto the bottom half.
 
 Video filters are loaded using the @var{-vf} option passed to
-ffmpeg or to avplay. Filters in the same linear chain are separated by
+avconv or to avplay. Filters in the same linear chain are separated by
 commas. In our example, @var{split, fifo, overlay} are in one linear
 chain, and @var{fifo, crop, vflip} are in another. The points where
 the linear chains join are labeled by names enclosed in square

___
libav-commits mailing list
libav-commits@libav.org
https://lists.libav.org/mailman/listinfo/libav-commits


[libav-commits] AVOptions: don't return an invalid option when option list is empty

2011-11-10 Thread Anton Khirnov
Module: libav
Branch: master
Commit: e1e22851c15b2b88de111353f53fe4c94431f883

Author:Anton Khirnov 
Committer: Anton Khirnov 
Date:  Thu Nov 10 09:19:09 2011 +0100

AVOptions: don't return an invalid option when option list is empty

---

 libavutil/opt.c |7 ---
 1 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/libavutil/opt.c b/libavutil/opt.c
index aa76301..7c53024 100644
--- a/libavutil/opt.c
+++ b/libavutil/opt.c
@@ -56,9 +56,10 @@ const AVOption *av_next_option(void *obj, const AVOption 
*last)
 
 const AVOption *av_opt_next(void *obj, const AVOption *last)
 {
-if (last && last[1].name) return ++last;
-else if (last)return NULL;
-else  return (*(AVClass**)obj)->option;
+AVClass *class = *(AVClass**)obj;
+if (!last && class->option[0].name) return class->option;
+if (last && last[1].name)   return ++last;
+return NULL;
 }
 
 static int read_number(const AVOption *o, void *dst, double *num, int *den, 
int64_t *intnum)

___
libav-commits mailing list
libav-commits@libav.org
https://lists.libav.org/mailman/listinfo/libav-commits


[libav-commits] AIFF: add 'twos' FourCC for the mux/demuxer (big endian PCM audio)

2011-11-10 Thread Mike Melanson
Module: libav
Branch: master
Commit: 45fcb86cf86a0dca43a196e927817efb188fd7da

Author:Mike Melanson 
Committer: Anton Khirnov 
Date:  Mon Nov  7 23:28:02 2011 -0800

AIFF: add 'twos' FourCC for the mux/demuxer (big endian PCM audio)

Signed-off-by: Anton Khirnov 

---

 libavformat/aiff.h |1 +
 1 files changed, 1 insertions(+), 0 deletions(-)

diff --git a/libavformat/aiff.h b/libavformat/aiff.h
index cd2bd25..3190a22 100644
--- a/libavformat/aiff.h
+++ b/libavformat/aiff.h
@@ -43,6 +43,7 @@ static const AVCodecTag ff_codec_aiff_tags[] = {
 { CODEC_ID_MACE6,MKTAG('M','A','C','6') },
 { CODEC_ID_GSM,  MKTAG('G','S','M',' ') },
 { CODEC_ID_ADPCM_G726,   MKTAG('G','7','2','6') },
+{ CODEC_ID_PCM_S16BE,MKTAG('t','w','o','s') },
 { CODEC_ID_PCM_S16LE,MKTAG('s','o','w','t') },
 { CODEC_ID_ADPCM_IMA_QT, MKTAG('i','m','a','4') },
 { CODEC_ID_QDM2, MKTAG('Q','D','M','2') },

___
libav-commits mailing list
libav-commits@libav.org
https://lists.libav.org/mailman/listinfo/libav-commits