You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficserver.apache.org by so...@apache.org on 2015/06/13 17:51:36 UTC
[3/3] trafficserver git commit: TS-3282: Add to CHANGES and
clang-format
TS-3282: Add to CHANGES and clang-format
Project: http://git-wip-us.apache.org/repos/asf/trafficserver/repo
Commit: http://git-wip-us.apache.org/repos/asf/trafficserver/commit/2c3f8790
Tree: http://git-wip-us.apache.org/repos/asf/trafficserver/tree/2c3f8790
Diff: http://git-wip-us.apache.org/repos/asf/trafficserver/diff/2c3f8790
Branch: refs/heads/master
Commit: 2c3f87907131ff21bb1831acd12901b57003696d
Parents: a0ab302
Author: Phil Sorber <so...@apache.org>
Authored: Sat Jun 13 09:50:51 2015 -0600
Committer: Phil Sorber <so...@apache.org>
Committed: Sat Jun 13 09:50:51 2015 -0600
----------------------------------------------------------------------
CHANGES | 2 +
plugins/experimental/mp4/mp4.cc | 172 ++++-----
plugins/experimental/mp4/mp4_common.h | 48 ++-
plugins/experimental/mp4/mp4_meta.cc | 552 +++++++++++++--------------
plugins/experimental/mp4/mp4_meta.h | 582 ++++++++++++++---------------
5 files changed, 641 insertions(+), 715 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/2c3f8790/CHANGES
----------------------------------------------------------------------
diff --git a/CHANGES b/CHANGES
index 0ac270c..bfe7985 100644
--- a/CHANGES
+++ b/CHANGES
@@ -1,6 +1,8 @@
-*- coding: utf-8 -*-
Changes with Apache Traffic Server 6.0.0
+ *) [TS-3282] Add mp4 streaming plugin.
+
*) [TS-3477] Change the default thread affinity to 1 (NUMA node).
*) [TS-481] Remove proxy.config.url_remap.url_remap_mode config.
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/2c3f8790/plugins/experimental/mp4/mp4.cc
----------------------------------------------------------------------
diff --git a/plugins/experimental/mp4/mp4.cc b/plugins/experimental/mp4/mp4.cc
index fcd5a6b..706977e 100644
--- a/plugins/experimental/mp4/mp4.cc
+++ b/plugins/experimental/mp4/mp4.cc
@@ -19,7 +19,7 @@
#include "mp4_common.h"
-static char * ts_arg(const char *param, size_t param_len, const char *key, size_t key_len, size_t *val_len);
+static char *ts_arg(const char *param, size_t param_len, const char *key, size_t key_len, size_t *val_len);
static int mp4_handler(TSCont contp, TSEvent event, void *edata);
static void mp4_cache_lookup_complete(Mp4Context *mc, TSHttpTxn txnp);
static void mp4_read_response(Mp4Context *mc, TSHttpTxn txnp);
@@ -46,7 +46,7 @@ TSRemapInit(TSRemapInterface *api_info, char *errbuf, int errbuf_size)
}
TSReturnCode
-TSRemapNewInstance(int argc, char** /* argv ATS_UNUSED */, void** ih, char* errbuf, int errbuf_size)
+TSRemapNewInstance(int argc, char ** /* argv ATS_UNUSED */, void **ih, char *errbuf, int errbuf_size)
{
if (argc > 2) {
snprintf(errbuf, errbuf_size, "[TSRemapNewInstance] - Argument should be removed");
@@ -57,26 +57,26 @@ TSRemapNewInstance(int argc, char** /* argv ATS_UNUSED */, void** ih, char* errb
}
void
-TSRemapDeleteInstance(void* /* ih ATS_UNUSED */)
+TSRemapDeleteInstance(void * /* ih ATS_UNUSED */)
{
return;
}
TSRemapStatus
-TSRemapDoRemap(void* /* ih ATS_UNUSED */, TSHttpTxn rh, TSRemapRequestInfo *rri)
+TSRemapDoRemap(void * /* ih ATS_UNUSED */, TSHttpTxn rh, TSRemapRequestInfo *rri)
{
- const char *method, *query, *path;
- int method_len, query_len, path_len;
- size_t val_len;
- const char *val;
- int ret;
- float start;
- char buf[1024];
- int buf_len;
- int left, right;
- TSMLoc ae_field, range_field;
- TSCont contp;
- Mp4Context *mc;
+ const char *method, *query, *path;
+ int method_len, query_len, path_len;
+ size_t val_len;
+ const char *val;
+ int ret;
+ float start;
+ char buf[1024];
+ int buf_len;
+ int left, right;
+ TSMLoc ae_field, range_field;
+ TSCont contp;
+ Mp4Context *mc;
method = TSHttpHdrMethodGet(rri->requestBufp, rri->requestHdrp, &method_len);
if (method != TS_HTTP_METHOD_GET) {
@@ -96,7 +96,7 @@ TSRemapDoRemap(void* /* ih ATS_UNUSED */, TSHttpTxn rh, TSRemapRequestInfo *rri)
start = 0;
query = TSUrlHttpQueryGet(rri->requestBufp, rri->requestUrl, &query_len);
- val = ts_arg(query, query_len, "start", sizeof("start")-1, &val_len);
+ val = ts_arg(query, query_len, "start", sizeof("start") - 1, &val_len);
if (val != NULL) {
ret = sscanf(val, "%f", &start);
if (ret != 1)
@@ -108,7 +108,7 @@ TSRemapDoRemap(void* /* ih ATS_UNUSED */, TSHttpTxn rh, TSRemapRequestInfo *rri)
} else if (start < 0) {
TSHttpTxnSetHttpRetStatus(rh, TS_HTTP_STATUS_BAD_REQUEST);
- TSHttpTxnErrorBodySet(rh, TSstrdup("Invalid request."), sizeof("Invalid request.")-1, NULL);
+ TSHttpTxnErrorBodySet(rh, TSstrdup("Invalid request."), sizeof("Invalid request.") - 1, NULL);
}
// reset args
@@ -123,20 +123,18 @@ TSRemapDoRemap(void* /* ih ATS_UNUSED */, TSHttpTxn rh, TSRemapRequestInfo *rri)
right--;
}
- buf_len = sprintf(buf, "%.*s%.*s", left, query, right, query+query_len-right);
+ buf_len = sprintf(buf, "%.*s%.*s", left, query, right, query + query_len - right);
TSUrlHttpQuerySet(rri->requestBufp, rri->requestUrl, buf, buf_len);
// remove Accept-Encoding
- ae_field = TSMimeHdrFieldFind(rri->requestBufp, rri->requestHdrp,
- TS_MIME_FIELD_ACCEPT_ENCODING, TS_MIME_LEN_ACCEPT_ENCODING);
+ ae_field = TSMimeHdrFieldFind(rri->requestBufp, rri->requestHdrp, TS_MIME_FIELD_ACCEPT_ENCODING, TS_MIME_LEN_ACCEPT_ENCODING);
if (ae_field) {
TSMimeHdrFieldDestroy(rri->requestBufp, rri->requestHdrp, ae_field);
TSHandleMLocRelease(rri->requestBufp, rri->requestHdrp, ae_field);
}
// remove Range
- range_field = TSMimeHdrFieldFind(rri->requestBufp, rri->requestHdrp,
- TS_MIME_FIELD_RANGE, TS_MIME_LEN_RANGE);
+ range_field = TSMimeHdrFieldFind(rri->requestBufp, rri->requestHdrp, TS_MIME_FIELD_RANGE, TS_MIME_LEN_RANGE);
if (range_field) {
TSMimeHdrFieldDestroy(rri->requestBufp, rri->requestHdrp, range_field);
TSHandleMLocRelease(rri->requestBufp, rri->requestHdrp, range_field);
@@ -155,29 +153,28 @@ TSRemapDoRemap(void* /* ih ATS_UNUSED */, TSHttpTxn rh, TSRemapRequestInfo *rri)
static int
mp4_handler(TSCont contp, TSEvent event, void *edata)
{
- TSHttpTxn txnp;
- Mp4Context *mc;
+ TSHttpTxn txnp;
+ Mp4Context *mc;
txnp = (TSHttpTxn)edata;
- mc = (Mp4Context*)TSContDataGet(contp);
+ mc = (Mp4Context *)TSContDataGet(contp);
switch (event) {
+ case TS_EVENT_HTTP_CACHE_LOOKUP_COMPLETE:
+ mp4_cache_lookup_complete(mc, txnp);
+ break;
- case TS_EVENT_HTTP_CACHE_LOOKUP_COMPLETE:
- mp4_cache_lookup_complete(mc, txnp);
- break;
+ case TS_EVENT_HTTP_READ_RESPONSE_HDR:
+ mp4_read_response(mc, txnp);
+ break;
- case TS_EVENT_HTTP_READ_RESPONSE_HDR:
- mp4_read_response(mc, txnp);
- break;
-
- case TS_EVENT_HTTP_TXN_CLOSE:
- delete mc;
- TSContDestroy(contp);
- break;
+ case TS_EVENT_HTTP_TXN_CLOSE:
+ delete mc;
+ TSContDestroy(contp);
+ break;
- default:
- break;
+ default:
+ break;
}
TSHttpTxnReenable(txnp, TS_EVENT_HTTP_CONTINUE);
@@ -187,12 +184,12 @@ mp4_handler(TSCont contp, TSEvent event, void *edata)
static void
mp4_cache_lookup_complete(Mp4Context *mc, TSHttpTxn txnp)
{
- TSMBuffer bufp;
- TSMLoc hdrp;
- TSMLoc cl_field;
- TSHttpStatus code;
- int obj_status;
- int64_t n;
+ TSMBuffer bufp;
+ TSMLoc hdrp;
+ TSMLoc cl_field;
+ TSHttpStatus code;
+ int obj_status;
+ int64_t n;
if (TSHttpTxnCacheLookupStatusGet(txnp, &obj_status) == TS_ERROR) {
TSError("[%s] Couldn't get cache status of object", __FUNCTION__);
@@ -234,11 +231,11 @@ release:
static void
mp4_read_response(Mp4Context *mc, TSHttpTxn txnp)
{
- TSMBuffer bufp;
- TSMLoc hdrp;
- TSMLoc cl_field;
- TSHttpStatus status;
- int64_t n;
+ TSMBuffer bufp;
+ TSMLoc hdrp;
+ TSMLoc cl_field;
+ TSHttpStatus status;
+ int64_t n;
if (TSHttpTxnServerRespGet(txnp, &bufp, &hdrp) != TS_SUCCESS) {
TSError("[%s] could not get request os data", __FUNCTION__);
@@ -270,7 +267,7 @@ release:
static void
mp4_add_transform(Mp4Context *mc, TSHttpTxn txnp)
{
- TSVConn connp;
+ TSVConn connp;
if (mc->transform_added)
return;
@@ -288,10 +285,10 @@ mp4_add_transform(Mp4Context *mc, TSHttpTxn txnp)
}
static int
-mp4_transform_entry(TSCont contp, TSEvent event, void* /* edata ATS_UNUSED */)
+mp4_transform_entry(TSCont contp, TSEvent event, void * /* edata ATS_UNUSED */)
{
- TSVIO input_vio;
- Mp4Context *mc = (Mp4Context*)TSContDataGet(contp);
+ TSVIO input_vio;
+ Mp4Context *mc = (Mp4Context *)TSContDataGet(contp);
if (TSVConnClosedGet(contp)) {
TSContDestroy(contp);
@@ -299,20 +296,19 @@ mp4_transform_entry(TSCont contp, TSEvent event, void* /* edata ATS_UNUSED */)
}
switch (event) {
-
- case TS_EVENT_ERROR:
- input_vio = TSVConnWriteVIOGet(contp);
- TSContCall(TSVIOContGet(input_vio), TS_EVENT_ERROR, input_vio);
- break;
-
- case TS_EVENT_VCONN_WRITE_COMPLETE:
- TSVConnShutdown(TSTransformOutputVConnGet(contp), 0, 1);
- break;
-
- case TS_EVENT_VCONN_WRITE_READY:
- default:
- mp4_transform_handler(contp, mc);
- break;
+ case TS_EVENT_ERROR:
+ input_vio = TSVConnWriteVIOGet(contp);
+ TSContCall(TSVIOContGet(input_vio), TS_EVENT_ERROR, input_vio);
+ break;
+
+ case TS_EVENT_VCONN_WRITE_COMPLETE:
+ TSVConnShutdown(TSTransformOutputVConnGet(contp), 0, 1);
+ break;
+
+ case TS_EVENT_VCONN_WRITE_READY:
+ default:
+ mp4_transform_handler(contp, mc);
+ break;
}
return 0;
@@ -321,12 +317,12 @@ mp4_transform_entry(TSCont contp, TSEvent event, void* /* edata ATS_UNUSED */)
static int
mp4_transform_handler(TSCont contp, Mp4Context *mc)
{
- TSVConn output_conn;
- TSVIO input_vio;
- TSIOBufferReader input_reader;
- int64_t avail, toread, need, upstream_done;
- int ret;
- bool write_down;
+ TSVConn output_conn;
+ TSVIO input_vio;
+ TSIOBufferReader input_reader;
+ int64_t avail, toread, need, upstream_done;
+ int ret;
+ bool write_down;
Mp4TransformContext *mtc;
mtc = mc->mtc;
@@ -354,7 +350,6 @@ mp4_transform_handler(TSCont contp, Mp4Context *mc)
write_down = false;
if (!mtc->parse_over) {
-
ret = mp4_parse_meta(mtc, toread <= 0);
if (ret == 0)
goto trans;
@@ -383,7 +378,6 @@ mp4_transform_handler(TSCont contp, Mp4Context *mc)
}
} else {
-
// copy the new meta data
if (mtc->total < mtc->meta_length) {
TSIOBufferCopy(mtc->output.buffer, mtc->mm.out_handle.reader, mtc->meta_length, 0);
@@ -439,11 +433,11 @@ trans:
static int
mp4_parse_meta(Mp4TransformContext *mtc, bool body_complete)
{
- int ret;
- int64_t avail, bytes;
- TSIOBufferBlock blk;
- const char *data;
- Mp4Meta *mm;
+ int ret;
+ int64_t avail, bytes;
+ TSIOBufferBlock blk;
+ const char *data;
+ Mp4Meta *mm;
mm = &mtc->mm;
@@ -463,7 +457,7 @@ mp4_parse_meta(Mp4TransformContext *mtc, bool body_complete)
ret = mm->parse_meta(body_complete);
- if (ret > 0) { // meta success
+ if (ret > 0) { // meta success
mtc->tail = mm->start_pos;
mtc->content_length = mm->content_length;
mtc->meta_length = TSIOBufferReaderAvail(mm->out_handle.reader);
@@ -480,8 +474,8 @@ mp4_parse_meta(Mp4TransformContext *mtc, bool body_complete)
static char *
ts_arg(const char *param, size_t param_len, const char *key, size_t key_len, size_t *val_len)
{
- const char *p, *last;
- const char *val;
+ const char *p, *last;
+ const char *val;
*val_len = 0;
@@ -491,25 +485,23 @@ ts_arg(const char *param, size_t param_len, const char *key, size_t key_len, siz
p = param;
last = p + param_len;
- for ( ; p < last; p++) {
-
- p = (char*)memmem(p, last-p, key, key_len);
+ for (; p < last; p++) {
+ p = (char *)memmem(p, last - p, key, key_len);
if (p == NULL)
return NULL;
if ((p == param || *(p - 1) == '&') && *(p + key_len) == '=') {
-
val = p + key_len + 1;
- p = (char*)memchr(p, '&', last-p);
+ p = (char *)memchr(p, '&', last - p);
if (p == NULL)
p = param + param_len;
*val_len = p - val;
- return (char*)val;
+ return (char *)val;
}
}
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/2c3f8790/plugins/experimental/mp4/mp4_common.h
----------------------------------------------------------------------
diff --git a/plugins/experimental/mp4/mp4_common.h b/plugins/experimental/mp4/mp4_common.h
index 7c36fa2..bd0ef94 100644
--- a/plugins/experimental/mp4/mp4_common.h
+++ b/plugins/experimental/mp4/mp4_common.h
@@ -34,7 +34,7 @@
class IOHandle
{
public:
- IOHandle(): vio(NULL), buffer(NULL), reader(NULL) { };
+ IOHandle() : vio(NULL), buffer(NULL), reader(NULL){};
~IOHandle()
{
@@ -50,17 +50,16 @@ public:
}
public:
- TSVIO vio;
- TSIOBuffer buffer;
- TSIOBufferReader reader;
+ TSVIO vio;
+ TSIOBuffer buffer;
+ TSIOBufferReader reader;
};
class Mp4TransformContext
{
public:
Mp4TransformContext(float offset, int64_t cl)
- : total(0), tail(0), pos(0), content_length(0),
- parse_over(false), raw_transform(false)
+ : total(0), tail(0), pos(0), content_length(0), parse_over(false), raw_transform(false)
{
res_buffer = TSIOBufferCreate();
res_reader = TSIOBufferReaderAlloc(res_buffer);
@@ -86,27 +85,26 @@ public:
}
public:
- IOHandle output;
- Mp4Meta mm;
- int64_t total;
- int64_t tail;
- int64_t pos;
- int64_t content_length;
- int64_t meta_length;
-
- TSIOBuffer res_buffer;
- TSIOBufferReader res_reader;
- TSIOBufferReader dup_reader;
-
- bool parse_over;
- bool raw_transform;
+ IOHandle output;
+ Mp4Meta mm;
+ int64_t total;
+ int64_t tail;
+ int64_t pos;
+ int64_t content_length;
+ int64_t meta_length;
+
+ TSIOBuffer res_buffer;
+ TSIOBufferReader res_reader;
+ TSIOBufferReader dup_reader;
+
+ bool parse_over;
+ bool raw_transform;
};
class Mp4Context
{
public:
- Mp4Context(float s)
- : start(s), cl(0), mtc(NULL), transform_added(false) { };
+ Mp4Context(float s) : start(s), cl(0), mtc(NULL), transform_added(false){};
~Mp4Context()
{
@@ -117,12 +115,12 @@ public:
}
public:
- float start;
- int64_t cl;
+ float start;
+ int64_t cl;
Mp4TransformContext *mtc;
- bool transform_added;
+ bool transform_added;
};
#endif
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/2c3f8790/plugins/experimental/mp4/mp4_meta.cc
----------------------------------------------------------------------
diff --git a/plugins/experimental/mp4/mp4_meta.cc b/plugins/experimental/mp4/mp4_meta.cc
index ebf7918..cd7c993 100644
--- a/plugins/experimental/mp4/mp4_meta.cc
+++ b/plugins/experimental/mp4/mp4_meta.cc
@@ -19,52 +19,40 @@
#include "mp4_meta.h"
-static mp4_atom_handler mp4_atoms[] = {
- { "ftyp", &Mp4Meta::mp4_read_ftyp_atom },
- { "moov", &Mp4Meta::mp4_read_moov_atom },
- { "mdat", &Mp4Meta::mp4_read_mdat_atom },
- { NULL, NULL }
-};
-
-static mp4_atom_handler mp4_moov_atoms[] = {
- { "mvhd", &Mp4Meta::mp4_read_mvhd_atom },
- { "trak", &Mp4Meta::mp4_read_trak_atom },
- { "cmov", &Mp4Meta::mp4_read_cmov_atom },
- { NULL, NULL }
-};
-
-static mp4_atom_handler mp4_trak_atoms[] = {
- { "tkhd", &Mp4Meta::mp4_read_tkhd_atom },
- { "mdia", &Mp4Meta::mp4_read_mdia_atom },
- { NULL, NULL }
-};
-
-static mp4_atom_handler mp4_mdia_atoms[] = {
- { "mdhd", &Mp4Meta::mp4_read_mdhd_atom },
- { "hdlr", &Mp4Meta::mp4_read_hdlr_atom },
- { "minf", &Mp4Meta::mp4_read_minf_atom },
- { NULL, NULL }
-};
-
-static mp4_atom_handler mp4_minf_atoms[] = {
- { "vmhd", &Mp4Meta::mp4_read_vmhd_atom },
- { "smhd", &Mp4Meta::mp4_read_smhd_atom },
- { "dinf", &Mp4Meta::mp4_read_dinf_atom },
- { "stbl", &Mp4Meta::mp4_read_stbl_atom },
- { NULL, NULL }
-};
-
-static mp4_atom_handler mp4_stbl_atoms[] = {
- { "stsd", &Mp4Meta::mp4_read_stsd_atom },
- { "stts", &Mp4Meta::mp4_read_stts_atom },
- { "stss", &Mp4Meta::mp4_read_stss_atom },
- { "ctts", &Mp4Meta::mp4_read_ctts_atom },
- { "stsc", &Mp4Meta::mp4_read_stsc_atom },
- { "stsz", &Mp4Meta::mp4_read_stsz_atom },
- { "stco", &Mp4Meta::mp4_read_stco_atom },
- { "co64", &Mp4Meta::mp4_read_co64_atom },
- { NULL, NULL }
-};
+static mp4_atom_handler mp4_atoms[] = {{"ftyp", &Mp4Meta::mp4_read_ftyp_atom},
+ {"moov", &Mp4Meta::mp4_read_moov_atom},
+ {"mdat", &Mp4Meta::mp4_read_mdat_atom},
+ {NULL, NULL}};
+
+static mp4_atom_handler mp4_moov_atoms[] = {{"mvhd", &Mp4Meta::mp4_read_mvhd_atom},
+ {"trak", &Mp4Meta::mp4_read_trak_atom},
+ {"cmov", &Mp4Meta::mp4_read_cmov_atom},
+ {NULL, NULL}};
+
+static mp4_atom_handler mp4_trak_atoms[] = {{"tkhd", &Mp4Meta::mp4_read_tkhd_atom},
+ {"mdia", &Mp4Meta::mp4_read_mdia_atom},
+ {NULL, NULL}};
+
+static mp4_atom_handler mp4_mdia_atoms[] = {{"mdhd", &Mp4Meta::mp4_read_mdhd_atom},
+ {"hdlr", &Mp4Meta::mp4_read_hdlr_atom},
+ {"minf", &Mp4Meta::mp4_read_minf_atom},
+ {NULL, NULL}};
+
+static mp4_atom_handler mp4_minf_atoms[] = {{"vmhd", &Mp4Meta::mp4_read_vmhd_atom},
+ {"smhd", &Mp4Meta::mp4_read_smhd_atom},
+ {"dinf", &Mp4Meta::mp4_read_dinf_atom},
+ {"stbl", &Mp4Meta::mp4_read_stbl_atom},
+ {NULL, NULL}};
+
+static mp4_atom_handler mp4_stbl_atoms[] = {{"stsd", &Mp4Meta::mp4_read_stsd_atom},
+ {"stts", &Mp4Meta::mp4_read_stts_atom},
+ {"stss", &Mp4Meta::mp4_read_stss_atom},
+ {"ctts", &Mp4Meta::mp4_read_ctts_atom},
+ {"stsc", &Mp4Meta::mp4_read_stsc_atom},
+ {"stsz", &Mp4Meta::mp4_read_stsz_atom},
+ {"stco", &Mp4Meta::mp4_read_stco_atom},
+ {"co64", &Mp4Meta::mp4_read_co64_atom},
+ {NULL, NULL}};
static void mp4_reader_set_32value(TSIOBufferReader readerp, int64_t offset, uint32_t n);
@@ -77,7 +65,7 @@ static int64_t IOBufferReaderCopy(TSIOBufferReader readerp, void *buf, int64_t l
int
Mp4Meta::parse_meta(bool body_complete)
{
- int ret, rc;
+ int ret, rc;
meta_avail = TSIOBufferReaderAvail(meta_reader);
@@ -95,7 +83,6 @@ Mp4Meta::parse_meta(bool body_complete)
return -1;
} else if (ret == 0) {
-
if (body_complete) {
return -1;
@@ -125,11 +112,11 @@ Mp4Meta::mp4_meta_consume(int64_t size)
int
Mp4Meta::post_process_meta()
{
- off_t start_offset, adjustment;
- uint32_t i, j;
- int64_t avail;
- BufferHandle *bh;
- Mp4Trak *trak;
+ off_t start_offset, adjustment;
+ uint32_t i, j;
+ int64_t avail;
+ BufferHandle *bh;
+ Mp4Trak *trak;
if (this->trak_num == 0) {
return -1;
@@ -143,13 +130,11 @@ Mp4Meta::post_process_meta()
out_handle.reader = TSIOBufferReaderAlloc(out_handle.buffer);
if (ftyp_atom.buffer) {
- TSIOBufferCopy(out_handle.buffer, ftyp_atom.reader,
- TSIOBufferReaderAvail(ftyp_atom.reader), 0);
+ TSIOBufferCopy(out_handle.buffer, ftyp_atom.reader, TSIOBufferReaderAvail(ftyp_atom.reader), 0);
}
if (moov_atom.buffer) {
- TSIOBufferCopy(out_handle.buffer, moov_atom.reader,
- TSIOBufferReaderAvail(moov_atom.reader), 0);
+ TSIOBufferCopy(out_handle.buffer, moov_atom.reader, TSIOBufferReaderAvail(moov_atom.reader), 0);
}
if (mvhd_atom.buffer) {
@@ -161,7 +146,6 @@ Mp4Meta::post_process_meta()
start_offset = cl;
for (i = 0; i < trak_num; i++) {
-
trak = trak_vec[i];
if (mp4_update_stts_atom(trak) != 0) {
@@ -183,7 +167,6 @@ Mp4Meta::post_process_meta()
}
if (trak->co64_data.buffer) {
-
if (mp4_update_co64_atom(trak) != 0)
return -1;
@@ -207,8 +190,7 @@ Mp4Meta::post_process_meta()
bh = &(trak->trak_atom);
for (j = 0; j <= MP4_LAST_ATOM; j++) {
if (bh[j].buffer) {
- TSIOBufferCopy(out_handle.buffer, bh[j].reader,
- TSIOBufferReaderAvail(bh[j].reader), 0);
+ TSIOBufferCopy(out_handle.buffer, bh[j].reader, TSIOBufferReaderAvail(bh[j].reader), 0);
}
}
@@ -221,12 +203,10 @@ Mp4Meta::post_process_meta()
mp4_reader_set_32value(moov_atom.reader, 0, this->moov_size);
this->content_length += this->moov_size;
- adjustment = this->ftyp_size + this->moov_size +
- mp4_update_mdat_atom(start_offset) - start_offset;
+ adjustment = this->ftyp_size + this->moov_size + mp4_update_mdat_atom(start_offset) - start_offset;
- TSIOBufferCopy(out_handle.buffer, mdat_atom.reader,
- TSIOBufferReaderAvail(mdat_atom.reader), 0);
+ TSIOBufferCopy(out_handle.buffer, mdat_atom.reader, TSIOBufferReaderAvail(mdat_atom.reader), 0);
for (i = 0; i < trak_num; i++) {
trak = trak_vec[i];
@@ -252,15 +232,14 @@ Mp4Meta::post_process_meta()
int
Mp4Meta::parse_root_atoms()
{
- int i, ret, rc;
- int64_t atom_size, atom_header_size;
- char buf[64];
- char *atom_header, *atom_name;
+ int i, ret, rc;
+ int64_t atom_size, atom_header_size;
+ char buf[64];
+ char *atom_header, *atom_name;
memset(buf, 0, sizeof(buf));
for (;;) {
-
if (meta_avail < (int64_t)sizeof(uint32_t))
return 0;
@@ -274,7 +253,6 @@ Mp4Meta::parse_root_atoms()
atom_header = buf;
if (atom_size < (int64_t)sizeof(mp4_atom_header)) {
-
if (atom_size == 1) {
if (meta_avail < (int64_t)sizeof(mp4_atom_header64)) {
return 0;
@@ -287,9 +265,9 @@ Mp4Meta::parse_root_atoms()
atom_size = mp4_get_64value(atom_header + 8);
atom_header_size = sizeof(mp4_atom_header64);
- } else { // regular atom
+ } else { // regular atom
- if (meta_avail < (int64_t)sizeof(mp4_atom_header)) // not enough for atom header
+ if (meta_avail < (int64_t)sizeof(mp4_atom_header)) // not enough for atom header
return 0;
atom_header_size = sizeof(mp4_atom_header);
@@ -303,13 +281,12 @@ Mp4Meta::parse_root_atoms()
for (i = 0; mp4_atoms[i].name; i++) {
if (memcmp(atom_name, mp4_atoms[i].name, 4) == 0) {
-
- ret = (this->*mp4_atoms[i].handler)(atom_header_size, atom_size - atom_header_size); // -1: error, 0: unfinished, 1: success
+ ret = (this->*mp4_atoms[i].handler)(atom_header_size, atom_size - atom_header_size); // -1: error, 0: unfinished, 1: success
if (ret <= 0) {
return ret;
- } else if (meta_complete) { // success
+ } else if (meta_complete) { // success
return 1;
}
@@ -318,12 +295,12 @@ Mp4Meta::parse_root_atoms()
}
// nonsignificant atom box
- rc = mp4_atom_next(atom_size, true); // 0: unfinished, 1: success
+ rc = mp4_atom_next(atom_size, true); // 0: unfinished, 1: success
if (rc == 0) {
return rc;
}
-next:
+ next:
continue;
}
@@ -354,17 +331,16 @@ Mp4Meta::mp4_atom_next(int64_t atom_size, bool wait)
int
Mp4Meta::mp4_read_atom(mp4_atom_handler *atom, int64_t size)
{
- int i, ret, rc;
- int64_t atom_size, atom_header_size;
- char buf[32];
- char *atom_header, *atom_name;
+ int i, ret, rc;
+ int64_t atom_size, atom_header_size;
+ char buf[32];
+ char *atom_header, *atom_name;
- if (meta_avail < size) // data insufficient, not reasonable for internal atom box.
+ if (meta_avail < size) // data insufficient, not reasonable for internal atom box.
return -1;
while (size > 0) {
-
- if (meta_avail < (int64_t)sizeof(uint32_t)) // data insufficient, not reasonable for internal atom box.
+ if (meta_avail < (int64_t)sizeof(uint32_t)) // data insufficient, not reasonable for internal atom box.
return -1;
IOBufferReaderCopy(meta_reader, buf, sizeof(mp4_atom_header64));
@@ -377,7 +353,6 @@ Mp4Meta::mp4_read_atom(mp4_atom_handler *atom, int64_t size)
atom_header = buf;
if (atom_size < (int64_t)sizeof(mp4_atom_header)) {
-
if (atom_size == 1) {
if (meta_avail < (int64_t)sizeof(mp4_atom_header64)) {
return -1;
@@ -390,7 +365,7 @@ Mp4Meta::mp4_read_atom(mp4_atom_handler *atom, int64_t size)
atom_size = mp4_get_64value(atom_header + 8);
atom_header_size = sizeof(mp4_atom_header64);
- } else { // regular atom
+ } else { // regular atom
if (meta_avail < (int64_t)sizeof(mp4_atom_header))
return -1;
@@ -406,11 +381,10 @@ Mp4Meta::mp4_read_atom(mp4_atom_handler *atom, int64_t size)
for (i = 0; atom[i].name; i++) {
if (memcmp(atom_name, atom[i].name, 4) == 0) {
-
if (meta_avail < atom_size)
return -1;
- ret = (this->*atom[i].handler)(atom_header_size, atom_size - atom_header_size); // -1: error, 0: success.
+ ret = (this->*atom[i].handler)(atom_header_size, atom_size - atom_header_size); // -1: error, 0: success.
if (ret < 0) {
return ret;
@@ -426,7 +400,7 @@ Mp4Meta::mp4_read_atom(mp4_atom_handler *atom, int64_t size)
return rc;
}
-next:
+ next:
size -= atom_size;
continue;
}
@@ -437,14 +411,14 @@ next:
int
Mp4Meta::mp4_read_ftyp_atom(int64_t atom_header_size, int64_t atom_data_size)
{
- int64_t atom_size;
+ int64_t atom_size;
if (atom_data_size > MP4_MIN_BUFFER_SIZE)
return -1;
atom_size = atom_header_size + atom_data_size;
- if (meta_avail < atom_size) { // data unsufficient, reasonable from the first level
+ if (meta_avail < atom_size) { // data unsufficient, reasonable from the first level
return 0;
}
@@ -463,10 +437,10 @@ Mp4Meta::mp4_read_ftyp_atom(int64_t atom_header_size, int64_t atom_data_size)
int
Mp4Meta::mp4_read_moov_atom(int64_t atom_header_size, int64_t atom_data_size)
{
- int64_t atom_size;
- int ret;
+ int64_t atom_size;
+ int ret;
- if (mdat_atom.buffer != NULL) // not reasonable for streaming media
+ if (mdat_atom.buffer != NULL) // not reasonable for streaming media
return -1;
atom_size = atom_header_size + atom_data_size;
@@ -474,7 +448,7 @@ Mp4Meta::mp4_read_moov_atom(int64_t atom_header_size, int64_t atom_data_size)
if (atom_data_size >= MP4_MAX_BUFFER_SIZE)
return -1;
- if (meta_avail < atom_size) { // data unsufficient, wait
+ if (meta_avail < atom_size) { // data unsufficient, wait
return 0;
}
@@ -492,21 +466,21 @@ Mp4Meta::mp4_read_moov_atom(int64_t atom_header_size, int64_t atom_data_size)
int
Mp4Meta::mp4_read_mvhd_atom(int64_t atom_header_size, int64_t atom_data_size)
{
- int64_t atom_size;
- uint32_t timescale;
- mp4_mvhd_atom *mvhd;
- mp4_mvhd64_atom mvhd64;
+ int64_t atom_size;
+ uint32_t timescale;
+ mp4_mvhd_atom *mvhd;
+ mp4_mvhd64_atom mvhd64;
if (sizeof(mp4_mvhd_atom) - 8 > (size_t)atom_data_size)
return -1;
IOBufferReaderCopy(meta_reader, &mvhd64, sizeof(mp4_mvhd64_atom));
- mvhd = (mp4_mvhd_atom*)&mvhd64;
+ mvhd = (mp4_mvhd_atom *)&mvhd64;
if (mvhd->version[0] == 0) {
timescale = mp4_get_32value(mvhd->timescale);
- } else { // 64-bit duration
+ } else { // 64-bit duration
timescale = mp4_get_32value(mvhd64.timescale);
}
@@ -526,8 +500,8 @@ Mp4Meta::mp4_read_mvhd_atom(int64_t atom_header_size, int64_t atom_data_size)
int
Mp4Meta::mp4_read_trak_atom(int64_t atom_header_size, int64_t atom_data_size)
{
- int rc;
- Mp4Trak *trak;
+ int rc;
+ Mp4Trak *trak;
if (trak_num >= MP4_MAX_TRAK_NUM - 1)
return -1;
@@ -546,8 +520,7 @@ Mp4Meta::mp4_read_trak_atom(int64_t atom_header_size, int64_t atom_data_size)
return rc;
}
-int
-Mp4Meta::mp4_read_cmov_atom(int64_t /*atom_header_size ATS_UNUSED */, int64_t /* atom_data_size ATS_UNUSED */)
+int Mp4Meta::mp4_read_cmov_atom(int64_t /*atom_header_size ATS_UNUSED */, int64_t /* atom_data_size ATS_UNUSED */)
{
return -1;
}
@@ -555,12 +528,12 @@ Mp4Meta::mp4_read_cmov_atom(int64_t /*atom_header_size ATS_UNUSED */, int64_t /*
int
Mp4Meta::mp4_read_tkhd_atom(int64_t atom_header_size, int64_t atom_data_size)
{
- int64_t atom_size;
- Mp4Trak *trak;
+ int64_t atom_size;
+ Mp4Trak *trak;
atom_size = atom_header_size + atom_data_size;
- trak = trak_vec[trak_num-1];
+ trak = trak_vec[trak_num - 1];
trak->tkhd_size = atom_size;
trak->tkhd_atom.buffer = TSIOBufferCreate();
@@ -569,8 +542,7 @@ Mp4Meta::mp4_read_tkhd_atom(int64_t atom_header_size, int64_t atom_data_size)
TSIOBufferCopy(trak->tkhd_atom.buffer, meta_reader, atom_size, 0);
mp4_meta_consume(atom_size);
- mp4_reader_set_32value(trak->tkhd_atom.reader,
- offsetof(mp4_tkhd_atom, size), atom_size);
+ mp4_reader_set_32value(trak->tkhd_atom.reader, offsetof(mp4_tkhd_atom, size), atom_size);
return 1;
}
@@ -578,9 +550,9 @@ Mp4Meta::mp4_read_tkhd_atom(int64_t atom_header_size, int64_t atom_data_size)
int
Mp4Meta::mp4_read_mdia_atom(int64_t atom_header_size, int64_t atom_data_size)
{
- Mp4Trak *trak;
+ Mp4Trak *trak;
- trak = trak_vec[trak_num-1];
+ trak = trak_vec[trak_num - 1];
trak->mdia_atom.buffer = TSIOBufferCreate();
trak->mdia_atom.reader = TSIOBufferReaderAlloc(trak->mdia_atom.buffer);
@@ -594,14 +566,14 @@ Mp4Meta::mp4_read_mdia_atom(int64_t atom_header_size, int64_t atom_data_size)
int
Mp4Meta::mp4_read_mdhd_atom(int64_t atom_header_size, int64_t atom_data_size)
{
- int64_t atom_size, duration;
- uint32_t ts;
- Mp4Trak *trak;
- mp4_mdhd_atom *mdhd;
- mp4_mdhd64_atom mdhd64;
+ int64_t atom_size, duration;
+ uint32_t ts;
+ Mp4Trak *trak;
+ mp4_mdhd_atom *mdhd;
+ mp4_mdhd64_atom mdhd64;
IOBufferReaderCopy(meta_reader, &mdhd64, sizeof(mp4_mdhd64_atom));
- mdhd = (mp4_mdhd_atom*)&mdhd64;
+ mdhd = (mp4_mdhd_atom *)&mdhd64;
if (mdhd->version[0] == 0) {
ts = mp4_get_32value(mdhd->timescale);
@@ -614,7 +586,7 @@ Mp4Meta::mp4_read_mdhd_atom(int64_t atom_header_size, int64_t atom_data_size)
atom_size = atom_header_size + atom_data_size;
- trak = trak_vec[trak_num-1];
+ trak = trak_vec[trak_num - 1];
trak->mdhd_size = atom_size;
trak->timescale = ts;
trak->duration = duration;
@@ -625,8 +597,7 @@ Mp4Meta::mp4_read_mdhd_atom(int64_t atom_header_size, int64_t atom_data_size)
TSIOBufferCopy(trak->mdhd_atom.buffer, meta_reader, atom_size, 0);
mp4_meta_consume(atom_size);
- mp4_reader_set_32value(trak->mdhd_atom.reader,
- offsetof(mp4_mdhd_atom, size), atom_size);
+ mp4_reader_set_32value(trak->mdhd_atom.reader, offsetof(mp4_mdhd_atom, size), atom_size);
return 1;
}
@@ -634,12 +605,12 @@ Mp4Meta::mp4_read_mdhd_atom(int64_t atom_header_size, int64_t atom_data_size)
int
Mp4Meta::mp4_read_hdlr_atom(int64_t atom_header_size, int64_t atom_data_size)
{
- int64_t atom_size;
- Mp4Trak *trak;
+ int64_t atom_size;
+ Mp4Trak *trak;
atom_size = atom_header_size + atom_data_size;
- trak = trak_vec[trak_num-1];
+ trak = trak_vec[trak_num - 1];
trak->hdlr_size = atom_size;
trak->hdlr_atom.buffer = TSIOBufferCreate();
@@ -654,9 +625,9 @@ Mp4Meta::mp4_read_hdlr_atom(int64_t atom_header_size, int64_t atom_data_size)
int
Mp4Meta::mp4_read_minf_atom(int64_t atom_header_size, int64_t atom_data_size)
{
- Mp4Trak *trak;
+ Mp4Trak *trak;
- trak = trak_vec[trak_num-1];
+ trak = trak_vec[trak_num - 1];
trak->minf_atom.buffer = TSIOBufferCreate();
trak->minf_atom.reader = TSIOBufferReaderAlloc(trak->minf_atom.buffer);
@@ -670,12 +641,12 @@ Mp4Meta::mp4_read_minf_atom(int64_t atom_header_size, int64_t atom_data_size)
int
Mp4Meta::mp4_read_vmhd_atom(int64_t atom_header_size, int64_t atom_data_size)
{
- int64_t atom_size;
- Mp4Trak *trak;
+ int64_t atom_size;
+ Mp4Trak *trak;
atom_size = atom_data_size + atom_header_size;
- trak = trak_vec[trak_num-1];
+ trak = trak_vec[trak_num - 1];
trak->vmhd_size += atom_size;
trak->vmhd_atom.buffer = TSIOBufferCreate();
@@ -690,12 +661,12 @@ Mp4Meta::mp4_read_vmhd_atom(int64_t atom_header_size, int64_t atom_data_size)
int
Mp4Meta::mp4_read_smhd_atom(int64_t atom_header_size, int64_t atom_data_size)
{
- int64_t atom_size;
- Mp4Trak *trak;
+ int64_t atom_size;
+ Mp4Trak *trak;
atom_size = atom_data_size + atom_header_size;
- trak = trak_vec[trak_num-1];
+ trak = trak_vec[trak_num - 1];
trak->smhd_size += atom_size;
trak->smhd_atom.buffer = TSIOBufferCreate();
@@ -710,12 +681,12 @@ Mp4Meta::mp4_read_smhd_atom(int64_t atom_header_size, int64_t atom_data_size)
int
Mp4Meta::mp4_read_dinf_atom(int64_t atom_header_size, int64_t atom_data_size)
{
- int64_t atom_size;
- Mp4Trak *trak;
+ int64_t atom_size;
+ Mp4Trak *trak;
atom_size = atom_data_size + atom_header_size;
- trak = trak_vec[trak_num-1];
+ trak = trak_vec[trak_num - 1];
trak->dinf_size += atom_size;
trak->dinf_atom.buffer = TSIOBufferCreate();
@@ -730,9 +701,9 @@ Mp4Meta::mp4_read_dinf_atom(int64_t atom_header_size, int64_t atom_data_size)
int
Mp4Meta::mp4_read_stbl_atom(int64_t atom_header_size, int64_t atom_data_size)
{
- Mp4Trak *trak;
+ Mp4Trak *trak;
- trak = trak_vec[trak_num-1];
+ trak = trak_vec[trak_num - 1];
trak->stbl_atom.buffer = TSIOBufferCreate();
trak->stbl_atom.reader = TSIOBufferReaderAlloc(trak->stbl_atom.buffer);
@@ -746,12 +717,12 @@ Mp4Meta::mp4_read_stbl_atom(int64_t atom_header_size, int64_t atom_data_size)
int
Mp4Meta::mp4_read_stsd_atom(int64_t atom_header_size, int64_t atom_data_size)
{
- int64_t atom_size;
- Mp4Trak *trak;
+ int64_t atom_size;
+ Mp4Trak *trak;
atom_size = atom_data_size + atom_header_size;
- trak = trak_vec[trak_num-1];
+ trak = trak_vec[trak_num - 1];
trak->size += atom_size;
trak->stsd_atom.buffer = TSIOBufferCreate();
@@ -767,10 +738,10 @@ Mp4Meta::mp4_read_stsd_atom(int64_t atom_header_size, int64_t atom_data_size)
int
Mp4Meta::mp4_read_stts_atom(int64_t atom_header_size, int64_t atom_data_size)
{
- int32_t entries;
- int64_t esize;
- mp4_stts_atom stts;
- Mp4Trak *trak;
+ int32_t entries;
+ int64_t esize;
+ mp4_stts_atom stts;
+ Mp4Trak *trak;
if (sizeof(mp4_stts_atom) - 8 > (size_t)atom_data_size)
return -1;
@@ -802,10 +773,10 @@ Mp4Meta::mp4_read_stts_atom(int64_t atom_header_size, int64_t atom_data_size)
int
Mp4Meta::mp4_read_stss_atom(int64_t atom_header_size, int64_t atom_data_size)
{
- int32_t entries;
- int64_t esize;
- mp4_stss_atom stss;
- Mp4Trak *trak;
+ int32_t entries;
+ int64_t esize;
+ mp4_stss_atom stss;
+ Mp4Trak *trak;
if (sizeof(mp4_stss_atom) - 8 > (size_t)atom_data_size)
return -1;
@@ -817,7 +788,7 @@ Mp4Meta::mp4_read_stss_atom(int64_t atom_header_size, int64_t atom_data_size)
if (sizeof(mp4_stss_atom) - 8 + esize > (size_t)atom_data_size)
return -1;
- trak = trak_vec[trak_num-1];
+ trak = trak_vec[trak_num - 1];
trak->sync_samples_entries = entries;
trak->stss_atom.buffer = TSIOBufferCreate();
@@ -836,10 +807,10 @@ Mp4Meta::mp4_read_stss_atom(int64_t atom_header_size, int64_t atom_data_size)
int
Mp4Meta::mp4_read_ctts_atom(int64_t atom_header_size, int64_t atom_data_size)
{
- int32_t entries;
- int64_t esize;
- mp4_ctts_atom ctts;
- Mp4Trak *trak;
+ int32_t entries;
+ int64_t esize;
+ mp4_ctts_atom ctts;
+ Mp4Trak *trak;
if (sizeof(mp4_ctts_atom) - 8 > (size_t)atom_data_size)
return -1;
@@ -870,10 +841,10 @@ Mp4Meta::mp4_read_ctts_atom(int64_t atom_header_size, int64_t atom_data_size)
int
Mp4Meta::mp4_read_stsc_atom(int64_t atom_header_size, int64_t atom_data_size)
{
- int32_t entries;
- int64_t esize;
- mp4_stsc_atom stsc;
- Mp4Trak *trak;
+ int32_t entries;
+ int64_t esize;
+ mp4_stsc_atom stsc;
+ Mp4Trak *trak;
if (sizeof(mp4_stsc_atom) - 8 > (size_t)atom_data_size)
return -1;
@@ -904,10 +875,10 @@ Mp4Meta::mp4_read_stsc_atom(int64_t atom_header_size, int64_t atom_data_size)
int
Mp4Meta::mp4_read_stsz_atom(int64_t atom_header_size, int64_t atom_data_size)
{
- int32_t entries, size;
- int64_t esize, atom_size;
- mp4_stsz_atom stsz;
- Mp4Trak *trak;
+ int32_t entries, size;
+ int64_t esize, atom_size;
+ mp4_stsz_atom stsz;
+ Mp4Trak *trak;
if (sizeof(mp4_stsz_atom) - 8 > (size_t)atom_data_size)
return -1;
@@ -926,7 +897,6 @@ Mp4Meta::mp4_read_stsz_atom(int64_t atom_header_size, int64_t atom_data_size)
TSIOBufferCopy(trak->stsz_atom.buffer, meta_reader, sizeof(mp4_stsz_atom), 0);
if (size == 0) {
-
if (sizeof(mp4_stsz_atom) - 8 + esize > (size_t)atom_data_size)
return -1;
@@ -948,10 +918,10 @@ Mp4Meta::mp4_read_stsz_atom(int64_t atom_header_size, int64_t atom_data_size)
int
Mp4Meta::mp4_read_stco_atom(int64_t atom_header_size, int64_t atom_data_size)
{
- int32_t entries;
- int64_t esize;
- mp4_stco_atom stco;
- Mp4Trak *trak;
+ int32_t entries;
+ int64_t esize;
+ mp4_stco_atom stco;
+ Mp4Trak *trak;
if (sizeof(mp4_stco_atom) - 8 > (size_t)atom_data_size)
return -1;
@@ -982,10 +952,10 @@ Mp4Meta::mp4_read_stco_atom(int64_t atom_header_size, int64_t atom_data_size)
int
Mp4Meta::mp4_read_co64_atom(int64_t atom_header_size, int64_t atom_data_size)
{
- int32_t entries;
- int64_t esize;
- mp4_co64_atom co64;
- Mp4Trak *trak;
+ int32_t entries;
+ int64_t esize;
+ mp4_co64_atom co64;
+ Mp4Trak *trak;
if (sizeof(mp4_co64_atom) - 8 > (size_t)atom_data_size)
return -1;
@@ -1013,8 +983,7 @@ Mp4Meta::mp4_read_co64_atom(int64_t atom_header_size, int64_t atom_data_size)
return 1;
}
-int
-Mp4Meta::mp4_read_mdat_atom(int64_t /* atom_header_size ATS_UNUSED */, int64_t /* atom_data_size ATS_UNUSED */)
+int Mp4Meta::mp4_read_mdat_atom(int64_t /* atom_header_size ATS_UNUSED */, int64_t /* atom_data_size ATS_UNUSED */)
{
mdat_atom.buffer = TSIOBufferCreate();
mdat_atom.reader = TSIOBufferReaderAlloc(mdat_atom.buffer);
@@ -1026,12 +995,12 @@ Mp4Meta::mp4_read_mdat_atom(int64_t /* atom_header_size ATS_UNUSED */, int64_t /
int
Mp4Meta::mp4_update_stts_atom(Mp4Trak *trak)
{
- uint32_t i, entries, count, duration, pass;
- uint32_t start_sample, left, start_count;
- uint32_t key_sample, old_sample;
- uint64_t start_time, sum;
- int64_t atom_size;
- TSIOBufferReader readerp;
+ uint32_t i, entries, count, duration, pass;
+ uint32_t start_sample, left, start_count;
+ uint32_t key_sample, old_sample;
+ uint64_t start_time, sum;
+ int64_t atom_size;
+ TSIOBufferReader readerp;
if (trak->stts_data.buffer == NULL)
return -1;
@@ -1052,7 +1021,7 @@ Mp4Meta::mp4_update_stts_atom(Mp4Trak *trak)
count = (uint32_t)mp4_reader_get_32value(readerp, offsetof(mp4_stts_entry, count));
if (start_time < (uint64_t)count * duration) {
- pass = (uint32_t)(start_time/duration);
+ pass = (uint32_t)(start_time / duration);
start_sample += pass;
count -= pass;
@@ -1069,7 +1038,7 @@ found:
TSIOBufferReaderFree(readerp);
old_sample = start_sample;
- key_sample = this->mp4_find_key_sample(start_sample, trak); // find the last key frame before start_sample
+ key_sample = this->mp4_find_key_sample(start_sample, trak); // find the last key frame before start_sample
if (old_sample != key_sample) {
start_sample = key_sample - 1;
@@ -1098,7 +1067,7 @@ found:
}
if (this->rs == 0) {
- this->rs = ((double)sum/trak->duration) * ((double)trak->duration/trak->timescale) * 1000;
+ this->rs = ((double)sum / trak->duration) * ((double)trak->duration / trak->timescale) * 1000;
}
left = entries - i;
@@ -1118,9 +1087,9 @@ found:
int
Mp4Meta::mp4_update_stss_atom(Mp4Trak *trak)
{
- int64_t atom_size;
- uint32_t i, j, entries, sample, start_sample, left;
- TSIOBufferReader readerp;
+ int64_t atom_size;
+ uint32_t i, j, entries, sample, start_sample, left;
+ TSIOBufferReader readerp;
if (trak->stss_data.buffer == NULL)
return 0;
@@ -1130,7 +1099,7 @@ Mp4Meta::mp4_update_stss_atom(Mp4Trak *trak)
start_sample = trak->start_sample + 1;
entries = trak->sync_samples_entries;
- for (i = 0; i < entries ; i++) {
+ for (i = 0; i < entries; i++) {
sample = (uint32_t)mp4_reader_get_32value(readerp, 0);
if (sample >= start_sample) {
@@ -1158,11 +1127,9 @@ found:
atom_size = sizeof(mp4_stss_atom) + left * sizeof(uint32_t);
trak->size += atom_size;
- mp4_reader_set_32value(trak->stss_atom.reader, offsetof(mp4_stss_atom, size),
- atom_size);
+ mp4_reader_set_32value(trak->stss_atom.reader, offsetof(mp4_stss_atom, size), atom_size);
- mp4_reader_set_32value(trak->stss_atom.reader, offsetof(mp4_stss_atom, entries),
- left);
+ mp4_reader_set_32value(trak->stss_atom.reader, offsetof(mp4_stss_atom, entries), left);
TSIOBufferReaderConsume(trak->stss_data.reader, i * sizeof(uint32_t));
TSIOBufferReaderFree(readerp);
@@ -1173,10 +1140,10 @@ found:
int
Mp4Meta::mp4_update_ctts_atom(Mp4Trak *trak)
{
- int64_t atom_size;
- uint32_t i, entries, start_sample, left;
- uint32_t count;
- TSIOBufferReader readerp;
+ int64_t atom_size;
+ uint32_t i, entries, start_sample, left;
+ uint32_t count;
+ TSIOBufferReader readerp;
if (trak->ctts_data.buffer == NULL)
return 0;
@@ -1236,11 +1203,11 @@ found:
int
Mp4Meta::mp4_update_stsc_atom(Mp4Trak *trak)
{
- int64_t atom_size;
- uint32_t i, entries, samples, start_sample;
- uint32_t chunk, next_chunk, n, id, j;
- mp4_stsc_entry *first;
- TSIOBufferReader readerp;
+ int64_t atom_size;
+ uint32_t i, entries, samples, start_sample;
+ uint32_t chunk, next_chunk, n, id, j;
+ mp4_stsc_entry *first;
+ TSIOBufferReader readerp;
if (trak->stsc_data.buffer == NULL)
return -1;
@@ -1248,7 +1215,7 @@ Mp4Meta::mp4_update_stsc_atom(Mp4Trak *trak)
if (trak->sample_to_chunk_entries == 0)
return -1;
- start_sample = (uint32_t) trak->start_sample;
+ start_sample = (uint32_t)trak->start_sample;
entries = trak->sample_to_chunk_entries - 1;
readerp = TSIOBufferReaderClone(trak->stsc_data.reader);
@@ -1294,7 +1261,7 @@ found:
return -1;
readerp = TSIOBufferReaderClone(trak->stsc_data.reader);
- TSIOBufferReaderConsume(readerp, sizeof(mp4_stsc_entry) * (i-1));
+ TSIOBufferReaderConsume(readerp, sizeof(mp4_stsc_entry) * (i - 1));
trak->start_chunk = chunk - 1;
trak->start_chunk += start_sample / samples;
@@ -1305,8 +1272,7 @@ found:
mp4_reader_set_32value(readerp, offsetof(mp4_stsc_entry, chunk), 1);
if (trak->chunk_samples && next_chunk - trak->start_chunk == 2) {
- mp4_reader_set_32value(readerp, offsetof(mp4_stsc_entry, samples),
- samples - trak->chunk_samples);
+ mp4_reader_set_32value(readerp, offsetof(mp4_stsc_entry, samples), samples - trak->chunk_samples);
} else if (trak->chunk_samples) {
first = &trak->stsc_chunk_entry;
@@ -1338,7 +1304,7 @@ found:
mp4_reader_set_32value(trak->stsc_atom.reader, offsetof(mp4_stsc_atom, size), atom_size);
mp4_reader_set_32value(trak->stsc_atom.reader, offsetof(mp4_stsc_atom, entries), entries);
- TSIOBufferReaderConsume(trak->stsc_data.reader, (i-1) * sizeof(mp4_stsc_entry));
+ TSIOBufferReaderConsume(trak->stsc_data.reader, (i - 1) * sizeof(mp4_stsc_entry));
TSIOBufferReaderFree(readerp);
return 0;
@@ -1347,10 +1313,10 @@ found:
int
Mp4Meta::mp4_update_stsz_atom(Mp4Trak *trak)
{
- uint32_t i;
- int64_t atom_size, avail;
- uint32_t pass;
- TSIOBufferReader readerp;
+ uint32_t i;
+ int64_t atom_size, avail;
+ uint32_t pass;
+ TSIOBufferReader readerp;
if (trak->stsz_data.buffer == NULL)
return 0;
@@ -1363,7 +1329,7 @@ Mp4Meta::mp4_update_stsz_atom(Mp4Trak *trak)
pass = trak->start_sample * sizeof(uint32_t);
- TSIOBufferReaderConsume(readerp, pass - sizeof(uint32_t)*(trak->chunk_samples));
+ TSIOBufferReaderConsume(readerp, pass - sizeof(uint32_t) * (trak->chunk_samples));
for (i = 0; i < trak->chunk_samples; i++) {
trak->chunk_samples_size += mp4_reader_get_32value(readerp, 0);
@@ -1373,10 +1339,8 @@ Mp4Meta::mp4_update_stsz_atom(Mp4Trak *trak)
atom_size = sizeof(mp4_stsz_atom) + avail - pass;
trak->size += atom_size;
- mp4_reader_set_32value(trak->stsz_atom.reader, offsetof(mp4_stsz_atom, size),
- atom_size);
- mp4_reader_set_32value(trak->stsz_atom.reader, offsetof(mp4_stsz_atom, entries),
- trak->sample_sizes_entries - trak->start_sample);
+ mp4_reader_set_32value(trak->stsz_atom.reader, offsetof(mp4_stsz_atom, size), atom_size);
+ mp4_reader_set_32value(trak->stsz_atom.reader, offsetof(mp4_stsz_atom, entries), trak->sample_sizes_entries - trak->start_sample);
TSIOBufferReaderConsume(trak->stsz_data.reader, pass);
TSIOBufferReaderFree(readerp);
@@ -1387,8 +1351,8 @@ Mp4Meta::mp4_update_stsz_atom(Mp4Trak *trak)
int
Mp4Meta::mp4_update_co64_atom(Mp4Trak *trak)
{
- int64_t atom_size, avail, pass;
- TSIOBufferReader readerp;
+ int64_t atom_size, avail, pass;
+ TSIOBufferReader readerp;
if (trak->co64_data.buffer == NULL)
return -1;
@@ -1408,10 +1372,8 @@ Mp4Meta::mp4_update_co64_atom(Mp4Trak *trak)
trak->start_offset += trak->chunk_samples_size;
mp4_reader_set_64value(readerp, 0, trak->start_offset);
- mp4_reader_set_32value(trak->co64_atom.reader, offsetof(mp4_co64_atom, size),
- atom_size);
- mp4_reader_set_32value(trak->co64_atom.reader, offsetof(mp4_co64_atom, entries),
- trak->chunks - trak->start_chunk);
+ mp4_reader_set_32value(trak->co64_atom.reader, offsetof(mp4_co64_atom, size), atom_size);
+ mp4_reader_set_32value(trak->co64_atom.reader, offsetof(mp4_co64_atom, entries), trak->chunks - trak->start_chunk);
return 0;
}
@@ -1419,9 +1381,9 @@ Mp4Meta::mp4_update_co64_atom(Mp4Trak *trak)
int
Mp4Meta::mp4_update_stco_atom(Mp4Trak *trak)
{
- int64_t atom_size, avail;
- uint32_t pass;
- TSIOBufferReader readerp;
+ int64_t atom_size, avail;
+ uint32_t pass;
+ TSIOBufferReader readerp;
if (trak->stco_data.buffer == NULL)
return -1;
@@ -1442,10 +1404,8 @@ Mp4Meta::mp4_update_stco_atom(Mp4Trak *trak)
trak->start_offset += trak->chunk_samples_size;
mp4_reader_set_32value(readerp, 0, trak->start_offset);
- mp4_reader_set_32value(trak->stco_atom.reader, offsetof(mp4_stco_atom, size),
- atom_size);
- mp4_reader_set_32value(trak->stco_atom.reader, offsetof(mp4_stco_atom, entries),
- trak->chunks - trak->start_chunk);
+ mp4_reader_set_32value(trak->stco_atom.reader, offsetof(mp4_stco_atom, size), atom_size);
+ mp4_reader_set_32value(trak->stco_atom.reader, offsetof(mp4_stco_atom, entries), trak->chunks - trak->start_chunk);
return 0;
}
@@ -1462,10 +1422,7 @@ Mp4Meta::mp4_update_stbl_atom(Mp4Trak *trak)
int
Mp4Meta::mp4_update_minf_atom(Mp4Trak *trak)
{
- trak->size += sizeof(mp4_atom_header) +
- trak->vmhd_size +
- trak->smhd_size +
- trak->dinf_size;
+ trak->size += sizeof(mp4_atom_header) + trak->vmhd_size + trak->smhd_size + trak->dinf_size;
mp4_reader_set_32value(trak->minf_atom.reader, 0, trak->size);
@@ -1493,8 +1450,8 @@ Mp4Meta::mp4_update_trak_atom(Mp4Trak *trak)
int
Mp4Meta::mp4_adjust_co64_atom(Mp4Trak *trak, off_t adjustment)
{
- int64_t pos, avail, offset;
- TSIOBufferReader readerp;
+ int64_t pos, avail, offset;
+ TSIOBufferReader readerp;
readerp = TSIOBufferReaderClone(trak->co64_data.reader);
avail = TSIOBufferReaderAvail(readerp);
@@ -1514,8 +1471,8 @@ Mp4Meta::mp4_adjust_co64_atom(Mp4Trak *trak, off_t adjustment)
int
Mp4Meta::mp4_adjust_stco_atom(Mp4Trak *trak, int32_t adjustment)
{
- int64_t pos, avail, offset;
- TSIOBufferReader readerp;
+ int64_t pos, avail, offset;
+ TSIOBufferReader readerp;
readerp = TSIOBufferReaderClone(trak->stco_data.reader);
avail = TSIOBufferReaderAvail(readerp);
@@ -1535,10 +1492,10 @@ Mp4Meta::mp4_adjust_stco_atom(Mp4Trak *trak, int32_t adjustment)
int64_t
Mp4Meta::mp4_update_mdat_atom(int64_t start_offset)
{
- int64_t atom_data_size;
- int64_t atom_size;
- int64_t atom_header_size;
- u_char *atom_header;
+ int64_t atom_data_size;
+ int64_t atom_size;
+ int64_t atom_header_size;
+ u_char *atom_header;
atom_data_size = this->cl - start_offset;
this->start_pos = start_offset;
@@ -1548,8 +1505,7 @@ Mp4Meta::mp4_update_mdat_atom(int64_t start_offset)
if (atom_data_size > 0xffffffff) {
atom_size = 1;
atom_header_size = sizeof(mp4_atom_header64);
- mp4_set_64value(atom_header + sizeof(mp4_atom_header),
- sizeof(mp4_atom_header64) + atom_data_size);
+ mp4_set_64value(atom_header + sizeof(mp4_atom_header), sizeof(mp4_atom_header64) + atom_data_size);
} else {
atom_size = sizeof(mp4_atom_header) + atom_data_size;
@@ -1573,9 +1529,9 @@ Mp4Meta::mp4_update_mdat_atom(int64_t start_offset)
uint32_t
Mp4Meta::mp4_find_key_sample(uint32_t start_sample, Mp4Trak *trak)
{
- uint32_t i;
- uint32_t sample, prev_sample, entries;
- TSIOBufferReader readerp;
+ uint32_t i;
+ uint32_t sample, prev_sample, entries;
+ TSIOBufferReader readerp;
if (trak->stss_data.buffer == NULL)
return start_sample;
@@ -1605,10 +1561,10 @@ found:
void
Mp4Meta::mp4_update_mvhd_duration()
{
- int64_t need;
- uint64_t duration, cut;
- mp4_mvhd_atom *mvhd;
- mp4_mvhd64_atom mvhd64;
+ int64_t need;
+ uint64_t duration, cut;
+ mp4_mvhd_atom *mvhd;
+ mp4_mvhd64_atom mvhd64;
need = TSIOBufferReaderAvail(mvhd_atom.reader);
@@ -1616,7 +1572,7 @@ Mp4Meta::mp4_update_mvhd_duration()
need = sizeof(mp4_mvhd64_atom);
IOBufferReaderCopy(mvhd_atom.reader, &mvhd64, need);
- mvhd = (mp4_mvhd_atom*)&mvhd64;
+ mvhd = (mp4_mvhd_atom *)&mvhd64;
if (this->rs > 0) {
cut = (uint64_t)(this->rs * this->timescale / 1000);
@@ -1630,7 +1586,7 @@ Mp4Meta::mp4_update_mvhd_duration()
duration -= cut;
mp4_reader_set_32value(mvhd_atom.reader, offsetof(mp4_mvhd_atom, duration), duration);
- } else { // 64-bit duration
+ } else { // 64-bit duration
duration = mp4_get_64value(mvhd64.duration);
duration -= cut;
mp4_reader_set_64value(mvhd_atom.reader, offsetof(mp4_mvhd64_atom, duration), duration);
@@ -1640,10 +1596,10 @@ Mp4Meta::mp4_update_mvhd_duration()
void
Mp4Meta::mp4_update_tkhd_duration(Mp4Trak *trak)
{
- int64_t need, cut;
- mp4_tkhd_atom *tkhd_atom;
- mp4_tkhd64_atom tkhd64_atom;
- int64_t duration;
+ int64_t need, cut;
+ mp4_tkhd_atom *tkhd_atom;
+ mp4_tkhd64_atom tkhd64_atom;
+ int64_t duration;
need = TSIOBufferReaderAvail(trak->tkhd_atom.reader);
@@ -1651,7 +1607,7 @@ Mp4Meta::mp4_update_tkhd_duration(Mp4Trak *trak)
need = sizeof(mp4_tkhd64_atom);
IOBufferReaderCopy(trak->tkhd_atom.reader, &tkhd64_atom, need);
- tkhd_atom = (mp4_tkhd_atom*)&tkhd64_atom;
+ tkhd_atom = (mp4_tkhd_atom *)&tkhd64_atom;
if (this->rs > 0) {
cut = (uint64_t)(this->rs * this->timescale / 1000);
@@ -1675,16 +1631,16 @@ Mp4Meta::mp4_update_tkhd_duration(Mp4Trak *trak)
void
Mp4Meta::mp4_update_mdhd_duration(Mp4Trak *trak)
{
- int64_t duration, need, cut;
- mp4_mdhd_atom *mdhd;
- mp4_mdhd64_atom mdhd64;
+ int64_t duration, need, cut;
+ mp4_mdhd_atom *mdhd;
+ mp4_mdhd64_atom mdhd64;
need = TSIOBufferReaderAvail(trak->mdhd_atom.reader);
if (need > (int64_t)sizeof(mp4_mdhd64_atom))
need = sizeof(mp4_mdhd64_atom);
IOBufferReaderCopy(trak->mdhd_atom.reader, &mdhd64, need);
- mdhd = (mp4_mdhd_atom*)&mdhd64;
+ mdhd = (mp4_mdhd_atom *)&mdhd64;
if (this->rs > 0) {
cut = (uint64_t)(this->rs * trak->timescale / 1000);
@@ -1709,29 +1665,27 @@ Mp4Meta::mp4_update_mdhd_duration(Mp4Trak *trak)
static void
mp4_reader_set_32value(TSIOBufferReader readerp, int64_t offset, uint32_t n)
{
- int pos;
- int64_t avail, left;
- TSIOBufferBlock blk;
- const char *start;
- u_char *ptr;
+ int pos;
+ int64_t avail, left;
+ TSIOBufferBlock blk;
+ const char *start;
+ u_char *ptr;
pos = 0;
blk = TSIOBufferReaderStart(readerp);
while (blk) {
-
start = TSIOBufferBlockReadStart(blk, readerp, &avail);
if (avail <= offset) {
offset -= avail;
} else {
-
left = avail - offset;
- ptr = (u_char*)(const_cast<char*> (start) + offset);
+ ptr = (u_char *)(const_cast<char *>(start) + offset);
while (pos < 4 && left > 0) {
- *ptr++ = (u_char) ((n) >> ((3 - pos) * 8));
+ *ptr++ = (u_char)((n) >> ((3 - pos) * 8));
pos++;
left--;
}
@@ -1749,29 +1703,27 @@ mp4_reader_set_32value(TSIOBufferReader readerp, int64_t offset, uint32_t n)
static void
mp4_reader_set_64value(TSIOBufferReader readerp, int64_t offset, uint64_t n)
{
- int pos;
- int64_t avail, left;
- TSIOBufferBlock blk;
- const char *start;
- u_char *ptr;
+ int pos;
+ int64_t avail, left;
+ TSIOBufferBlock blk;
+ const char *start;
+ u_char *ptr;
pos = 0;
blk = TSIOBufferReaderStart(readerp);
while (blk) {
-
start = TSIOBufferBlockReadStart(blk, readerp, &avail);
if (avail <= offset) {
offset -= avail;
} else {
-
left = avail - offset;
- ptr = (u_char*)(const_cast<char*> (start) + offset);
+ ptr = (u_char *)(const_cast<char *>(start) + offset);
while (pos < 8 && left > 0) {
- *ptr++ = (u_char) ((n) >> ((7 - pos) * 8));
+ *ptr++ = (u_char)((n) >> ((7 - pos) * 8));
pos++;
left--;
}
@@ -1789,36 +1741,34 @@ mp4_reader_set_64value(TSIOBufferReader readerp, int64_t offset, uint64_t n)
static uint32_t
mp4_reader_get_32value(TSIOBufferReader readerp, int64_t offset)
{
- int pos;
- int64_t avail, left;
- TSIOBufferBlock blk;
- const char *start;
- const u_char *ptr;
- u_char res[4];
+ int pos;
+ int64_t avail, left;
+ TSIOBufferBlock blk;
+ const char *start;
+ const u_char *ptr;
+ u_char res[4];
pos = 0;
blk = TSIOBufferReaderStart(readerp);
while (blk) {
-
start = TSIOBufferBlockReadStart(blk, readerp, &avail);
if (avail <= offset) {
offset -= avail;
} else {
-
left = avail - offset;
- ptr = (u_char*)(start + offset);
+ ptr = (u_char *)(start + offset);
while (pos < 4 && left > 0) {
- res[3-pos] = *ptr++;
+ res[3 - pos] = *ptr++;
pos++;
left--;
}
if (pos >= 4) {
- return *(uint32_t*)res;
+ return *(uint32_t *)res;
}
offset = 0;
@@ -1833,36 +1783,34 @@ mp4_reader_get_32value(TSIOBufferReader readerp, int64_t offset)
static uint64_t
mp4_reader_get_64value(TSIOBufferReader readerp, int64_t offset)
{
- int pos;
- int64_t avail, left;
- TSIOBufferBlock blk;
- const char *start;
- u_char *ptr;
- u_char res[8];
+ int pos;
+ int64_t avail, left;
+ TSIOBufferBlock blk;
+ const char *start;
+ u_char *ptr;
+ u_char res[8];
pos = 0;
blk = TSIOBufferReaderStart(readerp);
while (blk) {
-
start = TSIOBufferBlockReadStart(blk, readerp, &avail);
if (avail <= offset) {
offset -= avail;
} else {
-
left = avail - offset;
- ptr = (u_char*)(start + offset);
+ ptr = (u_char *)(start + offset);
while (pos < 8 && left > 0) {
- res[7-pos] = *ptr++;
+ res[7 - pos] = *ptr++;
pos++;
left--;
}
if (pos >= 8) {
- return *(uint64_t*)res;
+ return *(uint64_t *)res;
}
offset = 0;
@@ -1877,9 +1825,9 @@ mp4_reader_get_64value(TSIOBufferReader readerp, int64_t offset)
static int64_t
IOBufferReaderCopy(TSIOBufferReader readerp, void *buf, int64_t length)
{
- int64_t avail, need, n;
- const char *start;
- TSIOBufferBlock blk;
+ int64_t avail, need, n;
+ const char *start;
+ TSIOBufferBlock blk;
n = 0;
blk = TSIOBufferReaderStart(readerp);
@@ -1889,7 +1837,7 @@ IOBufferReaderCopy(TSIOBufferReader readerp, void *buf, int64_t length)
need = length < avail ? length : avail;
if (need > 0) {
- memcpy((char*)buf + n, start, need);
+ memcpy((char *)buf + n, start, need);
length -= need;
n += need;
}
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/2c3f8790/plugins/experimental/mp4/mp4_meta.h
----------------------------------------------------------------------
diff --git a/plugins/experimental/mp4/mp4_meta.h b/plugins/experimental/mp4/mp4_meta.h
index d1d4963..3391428 100644
--- a/plugins/experimental/mp4/mp4_meta.h
+++ b/plugins/experimental/mp4/mp4_meta.h
@@ -29,49 +29,41 @@
#include <ts/ts.h>
-#define MP4_MAX_TRAK_NUM 6
-#define MP4_MAX_BUFFER_SIZE (10 * 1024 * 1024)
-#define MP4_MIN_BUFFER_SIZE 1024
-
-#define DEBUG_TAG "ts_mp4"
-
-#define mp4_set_atom_name(p, n1, n2, n3, n4) \
- ((u_char *) (p))[4] = n1; \
- ((u_char *) (p))[5] = n2; \
- ((u_char *) (p))[6] = n3; \
- ((u_char *) (p))[7] = n4
-
-#define mp4_get_32value(p) \
- ( ((uint32_t) ((u_char *) (p))[0] << 24) \
- + ( ((u_char *) (p))[1] << 16) \
- + ( ((u_char *) (p))[2] << 8) \
- + ( ((u_char *) (p))[3]) )
-
-#define mp4_set_32value(p, n) \
- ((u_char *) (p))[0] = (u_char) ((n) >> 24); \
- ((u_char *) (p))[1] = (u_char) ((n) >> 16); \
- ((u_char *) (p))[2] = (u_char) ((n) >> 8); \
- ((u_char *) (p))[3] = (u_char) (n)
-
-#define mp4_get_64value(p) \
- ( ((uint64_t) ((u_char *) (p))[0] << 56) \
- + ((uint64_t) ((u_char *) (p))[1] << 48) \
- + ((uint64_t) ((u_char *) (p))[2] << 40) \
- + ((uint64_t) ((u_char *) (p))[3] << 32) \
- + ((uint64_t) ((u_char *) (p))[4] << 24) \
- + ( ((u_char *) (p))[5] << 16) \
- + ( ((u_char *) (p))[6] << 8) \
- + ( ((u_char *) (p))[7]) )
-
-#define mp4_set_64value(p, n) \
- ((u_char *) (p))[0] = (u_char) ((uint64_t) (n) >> 56); \
- ((u_char *) (p))[1] = (u_char) ((uint64_t) (n) >> 48); \
- ((u_char *) (p))[2] = (u_char) ((uint64_t) (n) >> 40); \
- ((u_char *) (p))[3] = (u_char) ((uint64_t) (n) >> 32); \
- ((u_char *) (p))[4] = (u_char) ( (n) >> 24); \
- ((u_char *) (p))[5] = (u_char) ( (n) >> 16); \
- ((u_char *) (p))[6] = (u_char) ( (n) >> 8); \
- ((u_char *) (p))[7] = (u_char) (n)
+#define MP4_MAX_TRAK_NUM 6
+#define MP4_MAX_BUFFER_SIZE (10 * 1024 * 1024)
+#define MP4_MIN_BUFFER_SIZE 1024
+
+#define DEBUG_TAG "ts_mp4"
+
+#define mp4_set_atom_name(p, n1, n2, n3, n4) \
+ ((u_char *)(p))[4] = n1; \
+ ((u_char *)(p))[5] = n2; \
+ ((u_char *)(p))[6] = n3; \
+ ((u_char *)(p))[7] = n4
+
+#define mp4_get_32value(p) \
+ (((uint32_t)((u_char *)(p))[0] << 24) + (((u_char *)(p))[1] << 16) + (((u_char *)(p))[2] << 8) + (((u_char *)(p))[3]))
+
+#define mp4_set_32value(p, n) \
+ ((u_char *)(p))[0] = (u_char)((n) >> 24); \
+ ((u_char *)(p))[1] = (u_char)((n) >> 16); \
+ ((u_char *)(p))[2] = (u_char)((n) >> 8); \
+ ((u_char *)(p))[3] = (u_char)(n)
+
+#define mp4_get_64value(p) \
+ (((uint64_t)((u_char *)(p))[0] << 56) + ((uint64_t)((u_char *)(p))[1] << 48) + ((uint64_t)((u_char *)(p))[2] << 40) + \
+ ((uint64_t)((u_char *)(p))[3] << 32) + ((uint64_t)((u_char *)(p))[4] << 24) + (((u_char *)(p))[5] << 16) + \
+ (((u_char *)(p))[6] << 8) + (((u_char *)(p))[7]))
+
+#define mp4_set_64value(p, n) \
+ ((u_char *)(p))[0] = (u_char)((uint64_t)(n) >> 56); \
+ ((u_char *)(p))[1] = (u_char)((uint64_t)(n) >> 48); \
+ ((u_char *)(p))[2] = (u_char)((uint64_t)(n) >> 40); \
+ ((u_char *)(p))[3] = (u_char)((uint64_t)(n) >> 32); \
+ ((u_char *)(p))[4] = (u_char)((n) >> 24); \
+ ((u_char *)(p))[5] = (u_char)((n) >> 16); \
+ ((u_char *)(p))[6] = (u_char)((n) >> 8); \
+ ((u_char *)(p))[7] = (u_char)(n)
typedef enum {
@@ -106,223 +98,223 @@ typedef enum {
typedef struct {
- u_char size[4];
- u_char name[4];
+ u_char size[4];
+ u_char name[4];
} mp4_atom_header;
typedef struct {
- u_char size[4];
- u_char name[4];
- u_char size64[8];
+ u_char size[4];
+ u_char name[4];
+ u_char size64[8];
} mp4_atom_header64;
typedef struct {
- u_char size[4];
- u_char name[4];
- u_char version[1];
- u_char flags[3];
- u_char creation_time[4];
- u_char modification_time[4];
- u_char timescale[4];
- u_char duration[4];
- u_char rate[4];
- u_char volume[2];
- u_char reserved[10];
- u_char matrix[36];
- u_char preview_time[4];
- u_char preview_duration[4];
- u_char poster_time[4];
- u_char selection_time[4];
- u_char selection_duration[4];
- u_char current_time[4];
- u_char next_track_id[4];
+ u_char size[4];
+ u_char name[4];
+ u_char version[1];
+ u_char flags[3];
+ u_char creation_time[4];
+ u_char modification_time[4];
+ u_char timescale[4];
+ u_char duration[4];
+ u_char rate[4];
+ u_char volume[2];
+ u_char reserved[10];
+ u_char matrix[36];
+ u_char preview_time[4];
+ u_char preview_duration[4];
+ u_char poster_time[4];
+ u_char selection_time[4];
+ u_char selection_duration[4];
+ u_char current_time[4];
+ u_char next_track_id[4];
} mp4_mvhd_atom;
typedef struct {
- u_char size[4];
- u_char name[4];
- u_char version[1];
- u_char flags[3];
- u_char creation_time[8];
- u_char modification_time[8];
- u_char timescale[4];
- u_char duration[8];
- u_char rate[4];
- u_char volume[2];
- u_char reserved[10];
- u_char matrix[36];
- u_char preview_time[4];
- u_char preview_duration[4];
- u_char poster_time[4];
- u_char selection_time[4];
- u_char selection_duration[4];
- u_char current_time[4];
- u_char next_track_id[4];
+ u_char size[4];
+ u_char name[4];
+ u_char version[1];
+ u_char flags[3];
+ u_char creation_time[8];
+ u_char modification_time[8];
+ u_char timescale[4];
+ u_char duration[8];
+ u_char rate[4];
+ u_char volume[2];
+ u_char reserved[10];
+ u_char matrix[36];
+ u_char preview_time[4];
+ u_char preview_duration[4];
+ u_char poster_time[4];
+ u_char selection_time[4];
+ u_char selection_duration[4];
+ u_char current_time[4];
+ u_char next_track_id[4];
} mp4_mvhd64_atom;
typedef struct {
- u_char size[4];
- u_char name[4];
- u_char version[1];
- u_char flags[3];
- u_char creation_time[4];
- u_char modification_time[4];
- u_char track_id[4];
- u_char reserved1[4];
- u_char duration[4];
- u_char reserved2[8];
- u_char layer[2];
- u_char group[2];
- u_char volume[2];
- u_char reverved3[2];
- u_char matrix[36];
- u_char width[4];
- u_char heigth[4];
+ u_char size[4];
+ u_char name[4];
+ u_char version[1];
+ u_char flags[3];
+ u_char creation_time[4];
+ u_char modification_time[4];
+ u_char track_id[4];
+ u_char reserved1[4];
+ u_char duration[4];
+ u_char reserved2[8];
+ u_char layer[2];
+ u_char group[2];
+ u_char volume[2];
+ u_char reverved3[2];
+ u_char matrix[36];
+ u_char width[4];
+ u_char heigth[4];
} mp4_tkhd_atom;
typedef struct {
- u_char size[4];
- u_char name[4];
- u_char version[1];
- u_char flags[3];
- u_char creation_time[8];
- u_char modification_time[8];
- u_char track_id[4];
- u_char reserved1[4];
- u_char duration[8];
- u_char reserved2[8];
- u_char layer[2];
- u_char group[2];
- u_char volume[2];
- u_char reverved3[2];
- u_char matrix[36];
- u_char width[4];
- u_char heigth[4];
+ u_char size[4];
+ u_char name[4];
+ u_char version[1];
+ u_char flags[3];
+ u_char creation_time[8];
+ u_char modification_time[8];
+ u_char track_id[4];
+ u_char reserved1[4];
+ u_char duration[8];
+ u_char reserved2[8];
+ u_char layer[2];
+ u_char group[2];
+ u_char volume[2];
+ u_char reverved3[2];
+ u_char matrix[36];
+ u_char width[4];
+ u_char heigth[4];
} mp4_tkhd64_atom;
typedef struct {
- u_char size[4];
- u_char name[4];
- u_char version[1];
- u_char flags[3];
- u_char creation_time[4];
- u_char modification_time[4];
- u_char timescale[4];
- u_char duration[4];
- u_char language[2];
- u_char quality[2];
+ u_char size[4];
+ u_char name[4];
+ u_char version[1];
+ u_char flags[3];
+ u_char creation_time[4];
+ u_char modification_time[4];
+ u_char timescale[4];
+ u_char duration[4];
+ u_char language[2];
+ u_char quality[2];
} mp4_mdhd_atom;
typedef struct {
- u_char size[4];
- u_char name[4];
- u_char version[1];
- u_char flags[3];
- u_char creation_time[8];
- u_char modification_time[8];
- u_char timescale[4];
- u_char duration[8];
- u_char language[2];
- u_char quality[2];
+ u_char size[4];
+ u_char name[4];
+ u_char version[1];
+ u_char flags[3];
+ u_char creation_time[8];
+ u_char modification_time[8];
+ u_char timescale[4];
+ u_char duration[8];
+ u_char language[2];
+ u_char quality[2];
} mp4_mdhd64_atom;
typedef struct {
- u_char size[4];
- u_char name[4];
- u_char version[1];
- u_char flags[3];
- u_char entries[4];
-
- u_char media_size[4];
- u_char media_name[4];
+ u_char size[4];
+ u_char name[4];
+ u_char version[1];
+ u_char flags[3];
+ u_char entries[4];
+
+ u_char media_size[4];
+ u_char media_name[4];
} mp4_stsd_atom;
typedef struct {
- u_char size[4];
- u_char name[4];
- u_char version[1];
- u_char flags[3];
- u_char entries[4];
+ u_char size[4];
+ u_char name[4];
+ u_char version[1];
+ u_char flags[3];
+ u_char entries[4];
} mp4_stts_atom;
typedef struct {
- u_char count[4];
- u_char duration[4];
+ u_char count[4];
+ u_char duration[4];
} mp4_stts_entry;
typedef struct {
- u_char size[4];
- u_char name[4];
- u_char version[1];
- u_char flags[3];
- u_char entries[4];
+ u_char size[4];
+ u_char name[4];
+ u_char version[1];
+ u_char flags[3];
+ u_char entries[4];
} mp4_stss_atom;
typedef struct {
- u_char size[4];
- u_char name[4];
- u_char version[1];
- u_char flags[3];
- u_char entries[4];
+ u_char size[4];
+ u_char name[4];
+ u_char version[1];
+ u_char flags[3];
+ u_char entries[4];
} mp4_ctts_atom;
typedef struct {
- u_char count[4];
- u_char offset[4];
+ u_char count[4];
+ u_char offset[4];
} mp4_ctts_entry;
typedef struct {
- u_char size[4];
- u_char name[4];
- u_char version[1];
- u_char flags[3];
- u_char entries[4];
+ u_char size[4];
+ u_char name[4];
+ u_char version[1];
+ u_char flags[3];
+ u_char entries[4];
} mp4_stsc_atom;
typedef struct {
- u_char chunk[4];
- u_char samples[4];
- u_char id[4];
+ u_char chunk[4];
+ u_char samples[4];
+ u_char id[4];
} mp4_stsc_entry;
typedef struct {
- u_char size[4];
- u_char name[4];
- u_char version[1];
- u_char flags[3];
- u_char uniform_size[4];
- u_char entries[4];
+ u_char size[4];
+ u_char name[4];
+ u_char version[1];
+ u_char flags[3];
+ u_char uniform_size[4];
+ u_char entries[4];
} mp4_stsz_atom;
typedef struct {
- u_char size[4];
- u_char name[4];
- u_char version[1];
- u_char flags[3];
- u_char entries[4];
+ u_char size[4];
+ u_char name[4];
+ u_char version[1];
+ u_char flags[3];
+ u_char entries[4];
} mp4_stco_atom;
typedef struct {
- u_char size[4];
- u_char name[4];
- u_char version[1];
- u_char flags[3];
- u_char entries[4];
+ u_char size[4];
+ u_char name[4];
+ u_char version[1];
+ u_char flags[3];
+ u_char entries[4];
} mp4_co64_atom;
class Mp4Meta;
-typedef int (Mp4Meta::*Mp4AtomHandler) (int64_t atom_header_size, int64_t atom_data_size);
+typedef int (Mp4Meta::*Mp4AtomHandler)(int64_t atom_header_size, int64_t atom_data_size);
typedef struct {
- const char *name;
- Mp4AtomHandler handler;
+ const char *name;
+ Mp4AtomHandler handler;
} mp4_atom_handler;
class BufferHandle
{
public:
- BufferHandle(): buffer(NULL), reader(NULL) { };
+ BufferHandle() : buffer(NULL), reader(NULL){};
~BufferHandle()
{
@@ -338,90 +330,85 @@ public:
}
public:
- TSIOBuffer buffer;
- TSIOBufferReader reader;
+ TSIOBuffer buffer;
+ TSIOBufferReader reader;
};
class Mp4Trak
{
public:
Mp4Trak()
- : timescale(0), duration(0), time_to_sample_entries(0), sample_to_chunk_entries(0),
- sync_samples_entries(0), composition_offset_entries(0), sample_sizes_entries(0),
- chunks(0), start_sample(0), start_chunk(0), chunk_samples(0),
- chunk_samples_size(0), start_offset(0), tkhd_size(0), mdhd_size(0), hdlr_size(0),
- vmhd_size(0), smhd_size(0), dinf_size(0), size(0)
+ : timescale(0), duration(0), time_to_sample_entries(0), sample_to_chunk_entries(0), sync_samples_entries(0),
+ composition_offset_entries(0), sample_sizes_entries(0), chunks(0), start_sample(0), start_chunk(0), chunk_samples(0),
+ chunk_samples_size(0), start_offset(0), tkhd_size(0), mdhd_size(0), hdlr_size(0), vmhd_size(0), smhd_size(0), dinf_size(0),
+ size(0)
{
memset(&stsc_chunk_entry, 0, sizeof(mp4_stsc_entry));
}
- ~Mp4Trak()
- {
- }
+ ~Mp4Trak() {}
public:
- uint32_t timescale;
- int64_t duration;
-
- uint32_t time_to_sample_entries; // stsc
- uint32_t sample_to_chunk_entries; // stsc
- uint32_t sync_samples_entries; // stss
- uint32_t composition_offset_entries; // ctts
- uint32_t sample_sizes_entries; // stsz
- uint32_t chunks; // stco, co64
-
- uint32_t start_sample;
- uint32_t start_chunk;
- uint32_t chunk_samples;
- uint64_t chunk_samples_size;
- off_t start_offset;
-
- size_t tkhd_size;
- size_t mdhd_size;
- size_t hdlr_size;
- size_t vmhd_size;
- size_t smhd_size;
- size_t dinf_size;
- size_t size;
-
- BufferHandle trak_atom;
- BufferHandle tkhd_atom;
- BufferHandle mdia_atom;
- BufferHandle mdhd_atom;
- BufferHandle hdlr_atom;
- BufferHandle minf_atom;
- BufferHandle vmhd_atom;
- BufferHandle smhd_atom;
- BufferHandle dinf_atom;
- BufferHandle stbl_atom;
- BufferHandle stsd_atom;
- BufferHandle stts_atom;
- BufferHandle stts_data;
- BufferHandle stss_atom;
- BufferHandle stss_data;
- BufferHandle ctts_atom;
- BufferHandle ctts_data;
- BufferHandle stsc_atom;
- BufferHandle stsc_chunk;
- BufferHandle stsc_data;
- BufferHandle stsz_atom;
- BufferHandle stsz_data;
- BufferHandle stco_atom;
- BufferHandle stco_data;
- BufferHandle co64_atom;
- BufferHandle co64_data;
-
- mp4_stsc_entry stsc_chunk_entry;
+ uint32_t timescale;
+ int64_t duration;
+
+ uint32_t time_to_sample_entries; // stsc
+ uint32_t sample_to_chunk_entries; // stsc
+ uint32_t sync_samples_entries; // stss
+ uint32_t composition_offset_entries; // ctts
+ uint32_t sample_sizes_entries; // stsz
+ uint32_t chunks; // stco, co64
+
+ uint32_t start_sample;
+ uint32_t start_chunk;
+ uint32_t chunk_samples;
+ uint64_t chunk_samples_size;
+ off_t start_offset;
+
+ size_t tkhd_size;
+ size_t mdhd_size;
+ size_t hdlr_size;
+ size_t vmhd_size;
+ size_t smhd_size;
+ size_t dinf_size;
+ size_t size;
+
+ BufferHandle trak_atom;
+ BufferHandle tkhd_atom;
+ BufferHandle mdia_atom;
+ BufferHandle mdhd_atom;
+ BufferHandle hdlr_atom;
+ BufferHandle minf_atom;
+ BufferHandle vmhd_atom;
+ BufferHandle smhd_atom;
+ BufferHandle dinf_atom;
+ BufferHandle stbl_atom;
+ BufferHandle stsd_atom;
+ BufferHandle stts_atom;
+ BufferHandle stts_data;
+ BufferHandle stss_atom;
+ BufferHandle stss_data;
+ BufferHandle ctts_atom;
+ BufferHandle ctts_data;
+ BufferHandle stsc_atom;
+ BufferHandle stsc_chunk;
+ BufferHandle stsc_data;
+ BufferHandle stsz_atom;
+ BufferHandle stsz_data;
+ BufferHandle stco_atom;
+ BufferHandle stco_data;
+ BufferHandle co64_atom;
+ BufferHandle co64_data;
+
+ mp4_stsc_entry stsc_chunk_entry;
};
class Mp4Meta
{
public:
Mp4Meta()
- : start(0), cl(0), content_length(0), meta_atom_size(0),
- meta_avail(0), wait_next(0), need_size(0), rs(0), rate(0),
- ftyp_size(0), moov_size(0), start_pos(0), timescale(0), trak_num(0),
- passed(0), meta_complete(false)
+ : start(0), cl(0), content_length(0), meta_atom_size(0), meta_avail(0), wait_next(0), need_size(0), rs(0), rate(0),
+ ftyp_size(0), moov_size(0), start_pos(0), timescale(0), trak_num(0), passed(0), meta_complete(false)
{
meta_buffer = TSIOBufferCreate();
meta_reader = TSIOBufferReaderAlloc(meta_buffer);
@@ -429,7 +416,7 @@ public:
~Mp4Meta()
{
- uint32_t i;
+ uint32_t i;
for (i = 0; i < trak_num; i++)
delete trak_vec[i];
@@ -449,7 +436,7 @@ public:
int post_process_meta();
void mp4_meta_consume(int64_t size);
- int mp4_atom_next(int64_t atom_size, bool wait=false);
+ int mp4_atom_next(int64_t atom_size, bool wait = false);
int mp4_read_atom(mp4_atom_handler *atom, int64_t size);
int parse_root_atoms();
@@ -505,41 +492,40 @@ public:
void mp4_update_mdhd_duration(Mp4Trak *trak);
public:
-
- int64_t start; // requested start time, measured in milliseconds.
- int64_t cl; // the total size of the mp4 file
- int64_t content_length; // the size of the new mp4 file
- int64_t meta_atom_size;
-
- TSIOBuffer meta_buffer; // meta data to be parsed
- TSIOBufferReader meta_reader;
-
- int64_t meta_avail;
- int64_t wait_next;
- int64_t need_size;
-
- BufferHandle meta_atom;
- BufferHandle ftyp_atom;
- BufferHandle moov_atom;
- BufferHandle mvhd_atom;
- BufferHandle mdat_atom;
- BufferHandle mdat_data;
- BufferHandle out_handle;
-
- Mp4Trak *trak_vec[MP4_MAX_TRAK_NUM];
-
- double rs;
- double rate;
-
- int64_t ftyp_size;
- int64_t moov_size;
- int64_t start_pos; // start position of the new mp4 file
- uint32_t timescale;
- uint32_t trak_num;
- int64_t passed;
-
- u_char mdat_atom_header[16];
- bool meta_complete;
+ int64_t start; // requested start time, measured in milliseconds.
+ int64_t cl; // the total size of the mp4 file
+ int64_t content_length; // the size of the new mp4 file
+ int64_t meta_atom_size;
+
+ TSIOBuffer meta_buffer; // meta data to be parsed
+ TSIOBufferReader meta_reader;
+
+ int64_t meta_avail;
+ int64_t wait_next;
+ int64_t need_size;
+
+ BufferHandle meta_atom;
+ BufferHandle ftyp_atom;
+ BufferHandle moov_atom;
+ BufferHandle mvhd_atom;
+ BufferHandle mdat_atom;
+ BufferHandle mdat_data;
+ BufferHandle out_handle;
+
+ Mp4Trak *trak_vec[MP4_MAX_TRAK_NUM];
+
+ double rs;
+ double rate;
+
+ int64_t ftyp_size;
+ int64_t moov_size;
+ int64_t start_pos; // start position of the new mp4 file
+ uint32_t timescale;
+ uint32_t trak_num;
+ int64_t passed;
+
+ u_char mdat_atom_header[16];
+ bool meta_complete;
};
#endif