Commit d4c12b8b authored by Anton Khirnov's avatar Anton Khirnov

oggparsetheora: K&R cosmetics, reformat

Also typedef the private data struct and make its name consistent with
the rest of Libav.
Signed-off-by: 's avatarVittorio Giovara <vittorio.giovara@gmail.com>
Signed-off-by: 's avatarAnton Khirnov <anton@khirnov.net>
parent b9589f5a
/** /**
Copyright (C) 2005 Matthieu CASTET, Alex Beregszaszi * Copyright (C) 2005 Matthieu CASTET, Alex Beregszaszi
*
Permission is hereby granted, free of charge, to any person * Permission is hereby granted, free of charge, to any person
obtaining a copy of this software and associated documentation * obtaining a copy of this software and associated documentation
files (the "Software"), to deal in the Software without * files (the "Software"), to deal in the Software without
restriction, including without limitation the rights to use, copy, * restriction, including without limitation the rights to use, copy,
modify, merge, publish, distribute, sublicense, and/or sell copies * modify, merge, publish, distribute, sublicense, and/or sell copies
of the Software, and to permit persons to whom the Software is * of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions: * furnished to do so, subject to the following conditions:
*
The above copyright notice and this permission notice shall be * The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software. * included in all copies or substantial portions of the Software.
*
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE SOFTWARE. * DEALINGS IN THE SOFTWARE.
**/ **/
#include <stdlib.h> #include <stdlib.h>
#include "libavutil/bswap.h" #include "libavutil/bswap.h"
...@@ -29,26 +29,26 @@ ...@@ -29,26 +29,26 @@
#include "internal.h" #include "internal.h"
#include "oggdec.h" #include "oggdec.h"
struct theora_params { typedef struct TheoraParams {
int gpshift; int gpshift;
int gpmask; int gpmask;
unsigned version; unsigned version;
}; } TheoraParams;
static int static int theora_header(AVFormatContext *s, int idx)
theora_header (AVFormatContext * s, int idx)
{ {
struct ogg *ogg = s->priv_data; struct ogg *ogg = s->priv_data;
struct ogg_stream *os = ogg->streams + idx; struct ogg_stream *os = ogg->streams + idx;
AVStream *st = s->streams[idx]; AVStream *st = s->streams[idx];
struct theora_params *thp = os->private; TheoraParams *thp = os->private;
int cds = st->codec->extradata_size + os->psize + 2, err; int cds = st->codec->extradata_size + os->psize + 2;
int err;
uint8_t *cdp; uint8_t *cdp;
if(!(os->buf[os->pstart] & 0x80)) if (!(os->buf[os->pstart] & 0x80))
return 0; return 0;
if(!thp){ if (!thp) {
thp = av_mallocz(sizeof(*thp)); thp = av_mallocz(sizeof(*thp));
os->private = thp; os->private = thp;
} }
...@@ -59,15 +59,15 @@ theora_header (AVFormatContext * s, int idx) ...@@ -59,15 +59,15 @@ theora_header (AVFormatContext * s, int idx)
int width, height; int width, height;
AVRational timebase; AVRational timebase;
init_get_bits(&gb, os->buf + os->pstart, os->psize*8); init_get_bits(&gb, os->buf + os->pstart, os->psize * 8);
skip_bits_long(&gb, 7*8); /* 0x80"theora" */ /* 0x80"theora" */
skip_bits_long(&gb, 7 * 8);
thp->version = get_bits_long(&gb, 24); thp->version = get_bits_long(&gb, 24);
if (thp->version < 0x030100) if (thp->version < 0x030100) {
{
av_log(s, AV_LOG_ERROR, av_log(s, AV_LOG_ERROR,
"Too old or unsupported Theora (%x)\n", thp->version); "Too old or unsupported Theora (%x)\n", thp->version);
return -1; return -1;
} }
...@@ -81,12 +81,13 @@ theora_header (AVFormatContext * s, int idx) ...@@ -81,12 +81,13 @@ theora_header (AVFormatContext * s, int idx)
if (thp->version >= 0x030200) { if (thp->version >= 0x030200) {
width = get_bits_long(&gb, 24); width = get_bits_long(&gb, 24);
height = get_bits_long(&gb, 24); height = get_bits_long(&gb, 24);
if ( width <= st->codec->width && width > st->codec->width-16 if (width <= st->codec->width && width > st->codec->width - 16 &&
&& height <= st->codec->height && height > st->codec->height-16) height <= st->codec->height && height > st->codec->height - 16)
avcodec_set_dimensions(st->codec, width, height); avcodec_set_dimensions(st->codec, width, height);
skip_bits(&gb, 16); skip_bits(&gb, 16);
} }
timebase.den = get_bits_long(&gb, 32); timebase.den = get_bits_long(&gb, 32);
timebase.num = get_bits_long(&gb, 32); timebase.num = get_bits_long(&gb, 32);
if (!(timebase.num > 0 && timebase.den > 0)) { if (!(timebase.num > 0 && timebase.den > 0)) {
...@@ -105,12 +106,11 @@ theora_header (AVFormatContext * s, int idx) ...@@ -105,12 +106,11 @@ theora_header (AVFormatContext * s, int idx)
skip_bits(&gb, 2); skip_bits(&gb, 2);
thp->gpshift = get_bits(&gb, 5); thp->gpshift = get_bits(&gb, 5);
thp->gpmask = (1 << thp->gpshift) - 1; thp->gpmask = (1 << thp->gpshift) - 1;
st->codec->codec_type = AVMEDIA_TYPE_VIDEO; st->codec->codec_type = AVMEDIA_TYPE_VIDEO;
st->codec->codec_id = AV_CODEC_ID_THEORA; st->codec->codec_id = AV_CODEC_ID_THEORA;
st->need_parsing = AVSTREAM_PARSE_HEADERS; st->need_parsing = AVSTREAM_PARSE_HEADERS;
} }
break; break;
case 0x81: case 0x81:
...@@ -128,21 +128,21 @@ theora_header (AVFormatContext * s, int idx) ...@@ -128,21 +128,21 @@ theora_header (AVFormatContext * s, int idx)
st->codec->extradata_size = 0; st->codec->extradata_size = 0;
return err; return err;
} }
cdp = st->codec->extradata + st->codec->extradata_size; cdp = st->codec->extradata + st->codec->extradata_size;
*cdp++ = os->psize >> 8; *cdp++ = os->psize >> 8;
*cdp++ = os->psize & 0xff; *cdp++ = os->psize & 0xff;
memcpy (cdp, os->buf + os->pstart, os->psize); memcpy(cdp, os->buf + os->pstart, os->psize);
st->codec->extradata_size = cds; st->codec->extradata_size = cds;
return 1; return 1;
} }
static uint64_t static uint64_t theora_gptopts(AVFormatContext *ctx, int idx, uint64_t gp,
theora_gptopts(AVFormatContext *ctx, int idx, uint64_t gp, int64_t *dts) int64_t *dts)
{ {
struct ogg *ogg = ctx->priv_data; struct ogg *ogg = ctx->priv_data;
struct ogg_stream *os = ogg->streams + idx; struct ogg_stream *os = ogg->streams + idx;
struct theora_params *thp = os->private; TheoraParams *thp = os->private;
uint64_t iframe, pframe; uint64_t iframe, pframe;
if (!thp) if (!thp)
...@@ -154,7 +154,7 @@ theora_gptopts(AVFormatContext *ctx, int idx, uint64_t gp, int64_t *dts) ...@@ -154,7 +154,7 @@ theora_gptopts(AVFormatContext *ctx, int idx, uint64_t gp, int64_t *dts)
if (thp->version < 0x030201) if (thp->version < 0x030201)
iframe++; iframe++;
if(!pframe) if (!pframe)
os->pflags |= AV_PKT_FLAG_KEY; os->pflags |= AV_PKT_FLAG_KEY;
if (dts) if (dts)
...@@ -164,9 +164,9 @@ theora_gptopts(AVFormatContext *ctx, int idx, uint64_t gp, int64_t *dts) ...@@ -164,9 +164,9 @@ theora_gptopts(AVFormatContext *ctx, int idx, uint64_t gp, int64_t *dts)
} }
const struct ogg_codec ff_theora_codec = { const struct ogg_codec ff_theora_codec = {
.magic = "\200theora", .magic = "\200theora",
.magicsize = 7, .magicsize = 7,
.header = theora_header, .header = theora_header,
.gptopts = theora_gptopts, .gptopts = theora_gptopts,
.nb_header = 3, .nb_header = 3,
}; };
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment