[FFmpeg-devel] [PATCH 1/2] avformat/http: Added a library-internal API for signalling end of chunk
Karthick J
kjeyapal at akamai.com
Fri Dec 22 09:04:41 EET 2017
From: Karthick Jeyapal <kjeyapal at akamai.com>
Right now there is no explicit way to signal end of chunk, when http_multiple is set.
ff_http_do_new_request() function implicitly signals end of chunk. But that could be too late for certain applications.
Hence added a new function ff_http_signal_end_of_chunk() which could be used internally within libavformat.
---
libavformat/http.c | 17 ++++++++++++++---
libavformat/http.h | 9 +++++++++
2 files changed, 23 insertions(+), 3 deletions(-)
diff --git a/libavformat/http.c b/libavformat/http.c
index cf86adc..d8224de 100644
--- a/libavformat/http.c
+++ b/libavformat/http.c
@@ -307,9 +307,11 @@ int ff_http_do_new_request(URLContext *h, const char *uri)
AVDictionary *options = NULL;
int ret;
- ret = http_shutdown(h, h->flags);
- if (ret < 0)
- return ret;
+ if (!s->end_chunked_post) {
+ ret = http_shutdown(h, h->flags);
+ if (ret < 0)
+ return ret;
+ }
s->end_chunked_post = 0;
s->chunkend = 0;
@@ -325,6 +327,15 @@ int ff_http_do_new_request(URLContext *h, const char *uri)
return ret;
}
+int ff_http_signal_end_of_chunk(URLContext *h) {
+ HTTPContext *s = h->priv_data;
+ int ret = 0;
+ if (!s->end_chunked_post) {
+ ret = http_shutdown(h, h->flags);
+ }
+ return ret;
+}
+
int ff_http_averror(int status_code, int default_averror)
{
switch (status_code) {
diff --git a/libavformat/http.h b/libavformat/http.h
index 7d02713..0eaeb48 100644
--- a/libavformat/http.h
+++ b/libavformat/http.h
@@ -47,6 +47,15 @@ void ff_http_init_auth_state(URLContext *dest, const URLContext *src);
*/
int ff_http_do_new_request(URLContext *h, const char *uri);
+/**
+ * Send a end of chunk signal(sends a string "0\r\n\r\n"), if applicable.
+ *
+ * @param h pointer to the resource
+ * @return a negative value if an error condition occurred, 0
+ * otherwise
+ */
+int ff_http_signal_end_of_chunk(URLContext *h);
+
int ff_http_averror(int status_code, int default_averror);
#endif /* AVFORMAT_HTTP_H */
--
1.9.1
More information about the ffmpeg-devel
mailing list