On Tue, May 14, 2013 at 09:17:55AM +0200, Anton Khirnov wrote: > > A FATE test please. Without it it's just asking to be silently broken without > anyone noticing for years. > > On Tue, 14 May 2013 07:45:24 +0200, Kostya Shishkov > <[email protected]> wrote: > > + > > + for (block_index = 0; block_index < total_blocks; block_index++) { > > + // Note that this call will make us skip the rest of the blocks > > + // if the frame ends prematurely. > > + if (skip == -1) > > + skip = decode_skip_count(&gb); > > I think checking the return value and printing an error would make this much > more clear to less smart readers than you. [...] > > + > > + av_dlog(avctx, "Frame data: provided %d bytes, used %d bytes\n", > > + buf_size, get_bits_count(&gb) >> 3); > > + > > + FFSWAP(uint8_t*, s->old_y, s->new_y); > > + FFSWAP(uint8_t*, s->old_u, s->new_u); > > + FFSWAP(uint8_t*, s->old_v, s->new_v); > > + > > + *got_frame = 1; > > + > > + return buf_size; > > +} > > + > > + > > extra newline? > > Otherwise looks simple enough to be ok.
Here you are.
>From 2e6c355aef8e7393b2fa175b43eb221125ef53d9 Mon Sep 17 00:00:00 2001 From: Eli Friedman <[email protected]> Date: Fri, 16 Dec 2011 21:30:27 +0100 Subject: [PATCH 1/2] Escape 130 (RPL) decoder Some fixes provided by Paul B Mahol <[email protected]> and Michael Niedermayer <[email protected]> and me. Signed-off-by: Diego Biurrun <[email protected]> Signed-off-by: Kostya Shishkov <[email protected]> --- Changelog | 1 + doc/general.texi | 1 + libavcodec/Makefile | 1 + libavcodec/allcodecs.c | 1 + libavcodec/avcodec.h | 1 + libavcodec/escape130.c | 356 ++++++++++++++++++++++++++++++++++++++++++++++++ libavcodec/version.h | 2 +- libavformat/rpl.c | 2 - 8 files changed, 362 insertions(+), 3 deletions(-) create mode 100644 libavcodec/escape130.c diff --git a/Changelog b/Changelog index 97e7a32..25440d0 100644 --- a/Changelog +++ b/Changelog @@ -18,6 +18,7 @@ version 10: transcoding audio - Matroska muxer can now put the index at the beginning of the file. - avconv -deinterlace option removed, the yadif filter should be used instead +- Escape 130 video decoder version 9: diff --git a/doc/general.texi b/doc/general.texi index ee87e9f..161bf76 100644 --- a/doc/general.texi +++ b/doc/general.texi @@ -496,6 +496,7 @@ following image formats are supported: @item Electronic Arts TGQ video @tab @tab X @item Electronic Arts TQI video @tab @tab X @item Escape 124 @tab @tab X +@item Escape 130 @tab @tab X @item FFmpeg video codec #1 @tab X @tab X @tab experimental lossless codec (fourcc: FFV1) @item Flash Screen Video v1 @tab X @tab X diff --git a/libavcodec/Makefile b/libavcodec/Makefile index 2c3522e..e82015a 100644 --- a/libavcodec/Makefile +++ b/libavcodec/Makefile @@ -162,6 +162,7 @@ OBJS-$(CONFIG_EIGHTBPS_DECODER) += 8bps.o OBJS-$(CONFIG_EIGHTSVX_EXP_DECODER) += 8svx.o OBJS-$(CONFIG_EIGHTSVX_FIB_DECODER) += 8svx.o OBJS-$(CONFIG_ESCAPE124_DECODER) += escape124.o +OBJS-$(CONFIG_ESCAPE130_DECODER) += escape130.o OBJS-$(CONFIG_FFV1_DECODER) += ffv1dec.o ffv1.o OBJS-$(CONFIG_FFV1_ENCODER) += ffv1enc.o ffv1.o OBJS-$(CONFIG_FFVHUFF_DECODER) += huffyuv.o huffyuvdec.o diff --git a/libavcodec/allcodecs.c b/libavcodec/allcodecs.c index 45fea3a..e644851 100644 --- a/libavcodec/allcodecs.c +++ b/libavcodec/allcodecs.c @@ -135,6 +135,7 @@ void avcodec_register_all(void) REGISTER_DECODER(EIGHTSVX_EXP, eightsvx_exp); REGISTER_DECODER(EIGHTSVX_FIB, eightsvx_fib); REGISTER_DECODER(ESCAPE124, escape124); + REGISTER_DECODER(ESCAPE130, escape130); REGISTER_ENCDEC (FFV1, ffv1); REGISTER_ENCDEC (FFVHUFF, ffvhuff); REGISTER_ENCDEC (FLASHSV, flashsv); diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h index 968f9e5..346ece3 100644 --- a/libavcodec/avcodec.h +++ b/libavcodec/avcodec.h @@ -267,6 +267,7 @@ enum AVCodecID { AV_CODEC_ID_CLLC, AV_CODEC_ID_MSS2, AV_CODEC_ID_VP9, + AV_CODEC_ID_ESCAPE130, /* various PCM "codecs" */ AV_CODEC_ID_FIRST_AUDIO = 0x10000, ///< A dummy id pointing at the start of audio codecs diff --git a/libavcodec/escape130.c b/libavcodec/escape130.c new file mode 100644 index 0000000..3e3f7e1 --- /dev/null +++ b/libavcodec/escape130.c @@ -0,0 +1,356 @@ +/* + * Escape 130 video decoder + * Copyright (C) 2008 Eli Friedman (eli.friedman <at> gmail.com) + * + * This file is part of Libav. + * + * Libav is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * Libav is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with Libav; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include "libavutil/attributes.h" +#include "libavutil/mem.h" +#include "avcodec.h" +#define BITSTREAM_READER_LE +#include "get_bits.h" +#include "internal.h" + +typedef struct Escape130Context { + uint8_t *old_y_avg; + + uint8_t *new_y, *old_y; + uint8_t *new_u, *old_u; + uint8_t *new_v, *old_v; + + uint8_t *buf1, *buf2; + int linesize[3]; +} Escape130Context; + +static const uint8_t offset_table[] = { 2, 4, 10, 20 }; +static const int8_t sign_table[64][4] = { + { 0, 0, 0, 0 }, + { -1, 1, 0, 0 }, + { 1, -1, 0, 0 }, + { -1, 0, 1, 0 }, + { -1, 1, 1, 0 }, + { 0, -1, 1, 0 }, + { 1, -1, 1, 0 }, + { -1, -1, 1, 0 }, + { 1, 0, -1, 0 }, + { 0, 1, -1, 0 }, + { 1, 1, -1, 0 }, + { -1, 1, -1, 0 }, + { 1, -1, -1, 0 }, + { -1, 0, 0, 1 }, + { -1, 1, 0, 1 }, + { 0, -1, 0, 1 }, + + { 0, 0, 0, 0 }, + { 1, -1, 0, 1 }, + { -1, -1, 0, 1 }, + { -1, 0, 1, 1 }, + { -1, 1, 1, 1 }, + { 0, -1, 1, 1 }, + { 1, -1, 1, 1 }, + { -1, -1, 1, 1 }, + { 0, 0, -1, 1 }, + { 1, 0, -1, 1 }, + { -1, 0, -1, 1 }, + { 0, 1, -1, 1 }, + { 1, 1, -1, 1 }, + { -1, 1, -1, 1 }, + { 0, -1, -1, 1 }, + { 1, -1, -1, 1 }, + + { 0, 0, 0, 0 }, + { -1, -1, -1, 1 }, + { 1, 0, 0, -1 }, + { 0, 1, 0, -1 }, + { 1, 1, 0, -1 }, + { -1, 1, 0, -1 }, + { 1, -1, 0, -1 }, + { 0, 0, 1, -1 }, + { 1, 0, 1, -1 }, + { -1, 0, 1, -1 }, + { 0, 1, 1, -1 }, + { 1, 1, 1, -1 }, + { -1, 1, 1, -1 }, + { 0, -1, 1, -1 }, + { 1, -1, 1, -1 }, + { -1, -1, 1, -1 }, + + { 0, 0, 0, 0 }, + { 1, 0, -1, -1 }, + { 0, 1, -1, -1 }, + { 1, 1, -1, -1 }, + { -1, 1, -1, -1 }, + { 1, -1, -1, -1 } +}; + +static const int8_t luma_adjust[] = { -4, -3, -2, -1, 1, 2, 3, 4 }; + +static const int8_t chroma_adjust[2][8] = { + { 1, 1, 0, -1, -1, -1, 0, 1 }, + { 0, 1, 1, 1, 0, -1, -1, -1 } +}; + +const uint8_t chroma_vals[] = { + 20, 28, 36, 44, 52, 60, 68, 76, + 84, 92, 100, 106, 112, 116, 120, 124, + 128, 132, 136, 140, 144, 150, 156, 164, + 172, 180, 188, 196, 204, 212, 220, 228 +}; + +static av_cold int escape130_decode_init(AVCodecContext *avctx) +{ + Escape130Context *s = avctx->priv_data; + avctx->pix_fmt = PIX_FMT_YUV420P; + + if ((avctx->width & 1) || (avctx->height & 1)) { + av_log(avctx, AV_LOG_ERROR, + "Dimensions should be a multiple of two.\n"); + return AVERROR_INVALIDDATA; + } + + s->old_y_avg = av_malloc(avctx->width * avctx->height / 4); + s->buf1 = av_malloc(avctx->width * avctx->height * 3 / 2); + s->buf2 = av_malloc(avctx->width * avctx->height * 3 / 2); + if (!s->old_y_avg || !s->buf1 || !s->buf2) { + av_freep(&s->old_y_avg); + av_freep(&s->buf1); + av_freep(&s->buf2); + av_log(avctx, AV_LOG_ERROR, "Could not allocate buffer.\n"); + return AVERROR(ENOMEM); + } + + s->linesize[0] = avctx->width; + s->linesize[1] = + s->linesize[2] = avctx->width / 2; + + s->new_y = s->buf1; + s->new_u = s->new_y + avctx->width * avctx->height; + s->new_v = s->new_u + avctx->width * avctx->height / 4; + s->old_y = s->buf2; + s->old_u = s->old_y + avctx->width * avctx->height; + s->old_v = s->old_u + avctx->width * avctx->height / 4; + memset(s->old_y, 0, avctx->width * avctx->height); + memset(s->old_u, 0x10, avctx->width * avctx->height / 4); + memset(s->old_v, 0x10, avctx->width * avctx->height / 4); + + return 0; +} + +static av_cold int escape130_decode_close(AVCodecContext *avctx) +{ + Escape130Context *s = avctx->priv_data; + + av_freep(&s->old_y_avg); + av_freep(&s->buf1); + av_freep(&s->buf2); + + return 0; +} + +static int decode_skip_count(GetBitContext* gb) +{ + int value; + + value = get_bits1(gb); + if (value) + return 0; + + value = get_bits(gb, 3); + if (value) + return value; + + value = get_bits(gb, 8); + if (value) + return value + 7; + + value = get_bits(gb, 15); + if (value) + return value + 262; + + return -1; +} + +static int escape130_decode_frame(AVCodecContext *avctx, void *data, + int *got_frame, AVPacket *avpkt) +{ + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; + Escape130Context *s = avctx->priv_data; + AVFrame *pic = data; + GetBitContext gb; + int ret; + + uint8_t *old_y, *old_cb, *old_cr, + *new_y, *new_cb, *new_cr; + uint8_t *dstY, *dstU, *dstV; + unsigned old_y_stride, old_cb_stride, old_cr_stride, + new_y_stride, new_cb_stride, new_cr_stride; + unsigned total_blocks = avctx->width * avctx->height / 4, + block_index, block_x = 0; + unsigned y[4] = { 0 }, cb = 0x10, cr = 0x10; + int skip = -1, y_avg = 0, i, j; + uint8_t *ya = s->old_y_avg; + + // first 16 bytes are header; no useful information in here + if (buf_size <= 16) { + av_log(avctx, AV_LOG_ERROR, "Insufficient frame data\n"); + return AVERROR_INVALIDDATA; + } + + if ((ret = ff_get_buffer(avctx, pic, 0)) < 0) + return ret; + + init_get_bits(&gb, buf + 16, (buf_size - 16) * 8); + + new_y = s->new_y; + new_cb = s->new_u; + new_cr = s->new_v; + new_y_stride = s->linesize[0]; + new_cb_stride = s->linesize[1]; + new_cr_stride = s->linesize[2]; + old_y = s->old_y; + old_cb = s->old_u; + old_cr = s->old_v; + old_y_stride = s->linesize[0]; + old_cb_stride = s->linesize[1]; + old_cr_stride = s->linesize[2]; + + for (block_index = 0; block_index < total_blocks; block_index++) { + // Note that this call will make us skip the rest of the blocks + // if the frame ends prematurely. + if (skip == -1) + skip = decode_skip_count(&gb); + if (skip == -1) { + av_log(avctx, AV_LOG_ERROR, "Error decoding skip value\n"); + return AVERROR_INVALIDDATA; + } + + if (skip) { + y[0] = old_y[0]; + y[1] = old_y[1]; + y[2] = old_y[old_y_stride]; + y[3] = old_y[old_y_stride + 1]; + y_avg = ya[0]; + cb = old_cb[0]; + cr = old_cr[0]; + } else { + if (get_bits1(&gb)) { + unsigned sign_selector = get_bits(&gb, 6); + unsigned difference_selector = get_bits(&gb, 2); + y_avg = 2 * get_bits(&gb, 5); + for (i = 0; i < 4; i++) { + y[i] = av_clip(y_avg + offset_table[difference_selector] * + sign_table[sign_selector][i], 0, 63); + } + } else if (get_bits1(&gb)) { + if (get_bits1(&gb)) { + y_avg = get_bits(&gb, 6); + } else { + unsigned adjust_index = get_bits(&gb, 3); + y_avg = (y_avg + luma_adjust[adjust_index]) & 63; + } + for (i = 0; i < 4; i++) + y[i] = y_avg; + } + + if (get_bits1(&gb)) { + if (get_bits1(&gb)) { + cb = get_bits(&gb, 5); + cr = get_bits(&gb, 5); + } else { + unsigned adjust_index = get_bits(&gb, 3); + cb = (cb + chroma_adjust[0][adjust_index]) & 31; + cr = (cr + chroma_adjust[1][adjust_index]) & 31; + } + } + } + *ya++ = y_avg; + + new_y[0] = y[0]; + new_y[1] = y[1]; + new_y[new_y_stride] = y[2]; + new_y[new_y_stride + 1] = y[3]; + *new_cb = cb; + *new_cr = cr; + + old_y += 2; + old_cb++; + old_cr++; + new_y += 2; + new_cb++; + new_cr++; + block_x++; + if (block_x * 2 == avctx->width) { + block_x = 0; + old_y += old_y_stride * 2 - avctx->width; + old_cb += old_cb_stride - avctx->width / 2; + old_cr += old_cr_stride - avctx->width / 2; + new_y += new_y_stride * 2 - avctx->width; + new_cb += new_cb_stride - avctx->width / 2; + new_cr += new_cr_stride - avctx->width / 2; + } + + skip--; + } + + new_y = s->new_y; + new_cb = s->new_u; + new_cr = s->new_v; + dstY = pic->data[0]; + dstU = pic->data[1]; + dstV = pic->data[2]; + for (j = 0; j < avctx->height; j++) { + for (i = 0; i < avctx->width; i++) + dstY[i] = new_y[i] << 2; + dstY += pic->linesize[0]; + new_y += new_y_stride; + } + for (j = 0; j < avctx->height / 2; j++) { + for (i = 0; i < avctx->width / 2; i++) { + dstU[i] = chroma_vals[new_cb[i]]; + dstV[i] = chroma_vals[new_cr[i]]; + } + dstU += pic->linesize[1]; + dstV += pic->linesize[2]; + new_cb += new_cb_stride; + new_cr += new_cr_stride; + } + + av_dlog(avctx, "Frame data: provided %d bytes, used %d bytes\n", + buf_size, get_bits_count(&gb) >> 3); + + FFSWAP(uint8_t*, s->old_y, s->new_y); + FFSWAP(uint8_t*, s->old_u, s->new_u); + FFSWAP(uint8_t*, s->old_v, s->new_v); + + *got_frame = 1; + + return buf_size; +} + +AVCodec ff_escape130_decoder = { + .name = "escape130", + .type = AVMEDIA_TYPE_VIDEO, + .id = AV_CODEC_ID_ESCAPE130, + .priv_data_size = sizeof(Escape130Context), + .init = escape130_decode_init, + .close = escape130_decode_close, + .decode = escape130_decode_frame, + .capabilities = CODEC_CAP_DR1, + .long_name = NULL_IF_CONFIG_SMALL("Escape 130"), +}; diff --git a/libavcodec/version.h b/libavcodec/version.h index 2dc0f4d..afc2d35 100644 --- a/libavcodec/version.h +++ b/libavcodec/version.h @@ -27,7 +27,7 @@ */ #define LIBAVCODEC_VERSION_MAJOR 55 -#define LIBAVCODEC_VERSION_MINOR 4 +#define LIBAVCODEC_VERSION_MINOR 5 #define LIBAVCODEC_VERSION_MICRO 0 #define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \ diff --git a/libavformat/rpl.c b/libavformat/rpl.c index a5b1e6e..42b47f8 100644 --- a/libavformat/rpl.c +++ b/libavformat/rpl.c @@ -164,11 +164,9 @@ static int rpl_read_header(AVFormatContext *s) // The header is wrong here, at least sometimes vst->codec->bits_per_coded_sample = 16; break; -#if 0 case 130: vst->codec->codec_id = AV_CODEC_ID_ESCAPE130; break; -#endif default: av_log(s, AV_LOG_WARNING, "RPL video format %i not supported yet!\n", -- 1.7.9.5
>From cf9ed22ef59e8b4c6dc37b4cba631f9eb070dae3 Mon Sep 17 00:00:00 2001 From: Kostya Shishkov <[email protected]> Date: Tue, 14 May 2013 18:53:23 +0200 Subject: [PATCH 2/2] Escape 130 FATE test --- tests/fate/video.mak | 3 + tests/ref/fate/armovie-escape130 | 360 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 363 insertions(+) create mode 100644 tests/ref/fate/armovie-escape130 diff --git a/tests/fate/video.mak b/tests/fate/video.mak index 618776f..998bf35 100644 --- a/tests/fate/video.mak +++ b/tests/fate/video.mak @@ -22,6 +22,9 @@ fate-ansi: CMD = framecrc -chars_per_frame 44100 -i $(SAMPLES)/ansi/TRE-IOM5.ANS FATE_SAMPLES_AVCONV-$(call DEMDEC, RPL, ESCAPE124) += fate-armovie-escape124 fate-armovie-escape124: CMD = framecrc -i $(SAMPLES)/rpl/ESCAPE.RPL -pix_fmt rgb24 +FATE_SAMPLES_AVCONV-$(call DEMDEC, RPL, ESCAPE130) += fate-armovie-escape130 +fate-armovie-escape130: CMD = framecrc -i $(SAMPLES)/rpl/landing.rpl -an + FATE_SAMPLES_AVCONV-$(call DEMDEC, AVI, AURA) += fate-auravision-v1 fate-auravision-v1: CMD = framecrc -i $(SAMPLES)/auravision/SOUVIDEO.AVI -an diff --git a/tests/ref/fate/armovie-escape130 b/tests/ref/fate/armovie-escape130 new file mode 100644 index 0000000..ee4ec26 --- /dev/null +++ b/tests/ref/fate/armovie-escape130 @@ -0,0 +1,360 @@ +#tb 0: 1/15 +0, 0, 0, 1, 76800, 0x860502ee +0, 1, 1, 1, 76800, 0x055da755 +0, 2, 2, 1, 76800, 0x67969220 +0, 3, 3, 1, 76800, 0xbb28885c +0, 4, 4, 1, 76800, 0x4000a5dd +0, 5, 5, 1, 76800, 0xfe1f6b04 +0, 6, 6, 1, 76800, 0x334cbe5d +0, 7, 7, 1, 76800, 0x87d15088 +0, 8, 8, 1, 76800, 0x70248ad3 +0, 9, 9, 1, 76800, 0x29bcaea0 +0, 10, 10, 1, 76800, 0xee81d3e2 +0, 11, 11, 1, 76800, 0x5bdd3cbc +0, 12, 12, 1, 76800, 0xd7a5e42e +0, 13, 13, 1, 76800, 0xbb354f7c +0, 14, 14, 1, 76800, 0x4c86e881 +0, 15, 15, 1, 76800, 0xc6acb7f4 +0, 16, 16, 1, 76800, 0x7701ca9c +0, 17, 17, 1, 76800, 0x5555d472 +0, 18, 18, 1, 76800, 0xa8fbc2d6 +0, 19, 19, 1, 76800, 0x558ab4f2 +0, 20, 20, 1, 76800, 0x9eb5ab72 +0, 21, 21, 1, 76800, 0x4711a894 +0, 22, 22, 1, 76800, 0xd649c04c +0, 23, 23, 1, 76800, 0x26b9d6cc +0, 24, 24, 1, 76800, 0x6217e494 +0, 25, 25, 1, 76800, 0x85d7e232 +0, 26, 26, 1, 76800, 0x4059ddb0 +0, 27, 27, 1, 76800, 0x3581cae2 +0, 28, 28, 1, 76800, 0x1885c99e +0, 29, 29, 1, 76800, 0xc87dcd66 +0, 30, 30, 1, 76800, 0x8645e084 +0, 31, 31, 1, 76800, 0xe17ed6b4 +0, 32, 32, 1, 76800, 0x2709c7b6 +0, 33, 33, 1, 76800, 0xded3ab34 +0, 34, 34, 1, 76800, 0x3e69a364 +0, 35, 35, 1, 76800, 0x90c7ae7e +0, 36, 36, 1, 76800, 0x7dffba9a +0, 37, 37, 1, 76800, 0x1311ce7a +0, 38, 38, 1, 76800, 0x6663e5ce +0, 39, 39, 1, 76800, 0x597d0173 +0, 40, 40, 1, 76800, 0x936b1ab3 +0, 41, 41, 1, 76800, 0x860f2157 +0, 42, 42, 1, 76800, 0x69cd2ffd +0, 43, 43, 1, 76800, 0xd0a24429 +0, 44, 44, 1, 76800, 0x6fbd49b3 +0, 45, 45, 1, 76800, 0x6e866211 +0, 46, 46, 1, 76800, 0x8ed9615d +0, 47, 47, 1, 76800, 0x5ef45ab1 +0, 48, 48, 1, 76800, 0x72174a5d +0, 49, 49, 1, 76800, 0x9e1346e1 +0, 50, 50, 1, 76800, 0xbe2046ef +0, 51, 51, 1, 76800, 0x6417511d +0, 52, 52, 1, 76800, 0xdc7d59d7 +0, 53, 53, 1, 76800, 0xea8f5569 +0, 54, 54, 1, 76800, 0x77b45d67 +0, 55, 55, 1, 76800, 0x949566bf +0, 56, 56, 1, 76800, 0x644c6e39 +0, 57, 57, 1, 76800, 0xe8e47155 +0, 58, 58, 1, 76800, 0x84eb80d3 +0, 59, 59, 1, 76800, 0x6ade8f99 +0, 60, 60, 1, 76800, 0x1359adf5 +0, 61, 61, 1, 76800, 0x3b8ab849 +0, 62, 62, 1, 76800, 0xb761c9af +0, 63, 63, 1, 76800, 0x89f0ccf5 +0, 64, 64, 1, 76800, 0xf50dc989 +0, 65, 65, 1, 76800, 0xc9e8c37f +0, 66, 66, 1, 76800, 0x91b1c6fb +0, 67, 67, 1, 76800, 0x30accc59 +0, 68, 68, 1, 76800, 0x4dbbd735 +0, 69, 69, 1, 76800, 0x06ece049 +0, 70, 70, 1, 76800, 0x9112ebef +0, 71, 71, 1, 76800, 0x4b9af209 +0, 72, 72, 1, 76800, 0x1063f2d5 +0, 73, 73, 1, 76800, 0xc00ef0eb +0, 74, 74, 1, 76800, 0xfc76efa1 +0, 75, 75, 1, 76800, 0xd85cff3b +0, 76, 76, 1, 76800, 0x2dc9fc19 +0, 77, 77, 1, 76800, 0xe5610674 +0, 78, 78, 1, 76800, 0xdfa5fdb5 +0, 79, 79, 1, 76800, 0xb7eef1d9 +0, 80, 80, 1, 76800, 0x3743ed2b +0, 81, 81, 1, 76800, 0xaaf6a11d +0, 82, 82, 1, 76800, 0xbd3dba25 +0, 83, 83, 1, 76800, 0x0d5a84c2 +0, 84, 84, 1, 76800, 0x04d3cede +0, 85, 85, 1, 76800, 0xd0ed078b +0, 86, 86, 1, 76800, 0x712c4257 +0, 87, 87, 1, 76800, 0x0866f074 +0, 88, 88, 1, 76800, 0x7bcbd610 +0, 89, 89, 1, 76800, 0xcfb16193 +0, 90, 90, 1, 76800, 0x08b2bf53 +0, 91, 91, 1, 76800, 0x8a89d293 +0, 92, 92, 1, 76800, 0xdceb169e +0, 93, 93, 1, 76800, 0x91b53522 +0, 94, 94, 1, 76800, 0xc6f36e86 +0, 95, 95, 1, 76800, 0x64849fae +0, 96, 96, 1, 76800, 0x7f060705 +0, 97, 97, 1, 76800, 0x100c7c79 +0, 98, 98, 1, 76800, 0xe6d3df05 +0, 99, 99, 1, 76800, 0x3947f65d +0, 100, 100, 1, 76800, 0xfe52d0e1 +0, 101, 101, 1, 76800, 0x5a81b935 +0, 102, 102, 1, 76800, 0x3dabcb31 +0, 103, 103, 1, 76800, 0x0ae6dea9 +0, 104, 104, 1, 76800, 0x214c2dec +0, 105, 105, 1, 76800, 0xeb526560 +0, 106, 106, 1, 76800, 0xbb618418 +0, 107, 107, 1, 76800, 0x61d9cbd0 +0, 108, 108, 1, 76800, 0x9d2660bb +0, 109, 109, 1, 76800, 0xf4f5dc33 +0, 110, 110, 1, 76800, 0xe2551ec2 +0, 111, 111, 1, 76800, 0x5f971e3a +0, 112, 112, 1, 76800, 0xa96c0cea +0, 113, 113, 1, 76800, 0xd904cdeb +0, 114, 114, 1, 76800, 0x0443a227 +0, 115, 115, 1, 76800, 0xf3e92457 +0, 116, 116, 1, 76800, 0x2df4d5b0 +0, 117, 117, 1, 76800, 0x72d4b018 +0, 118, 118, 1, 76800, 0x260ac3dc +0, 119, 119, 1, 76800, 0x30160163 +0, 120, 120, 1, 76800, 0x76c7656f +0, 121, 121, 1, 76800, 0xdc42bb23 +0, 122, 122, 1, 76800, 0xdbab366a +0, 123, 123, 1, 76800, 0xf998ae66 +0, 124, 124, 1, 76800, 0x3b6afb62 +0, 125, 125, 1, 76800, 0x3fb3f76e +0, 126, 126, 1, 76800, 0xc4f4d89a +0, 127, 127, 1, 76800, 0xf448aa5a +0, 128, 128, 1, 76800, 0xf9fed3c2 +0, 129, 129, 1, 76800, 0x8e4526bd +0, 130, 130, 1, 76800, 0xa4be7a39 +0, 131, 131, 1, 76800, 0x07d376b9 +0, 132, 132, 1, 76800, 0x47993f51 +0, 133, 133, 1, 76800, 0x2f5816ad +0, 134, 134, 1, 76800, 0x0f78187d +0, 135, 135, 1, 76800, 0x5129e47e +0, 136, 136, 1, 76800, 0x1050b9e2 +0, 137, 137, 1, 76800, 0x5ba278d2 +0, 138, 138, 1, 76800, 0xc5f5278e +0, 139, 139, 1, 76800, 0xe406e093 +0, 140, 140, 1, 76800, 0x1b03c34f +0, 141, 141, 1, 76800, 0xaad8b463 +0, 142, 142, 1, 76800, 0x4f90ad0d +0, 143, 143, 1, 76800, 0x83a1b8b3 +0, 144, 144, 1, 76800, 0x682ccba1 +0, 145, 145, 1, 76800, 0xf44f0d22 +0, 146, 146, 1, 76800, 0x19c02d14 +0, 147, 147, 1, 76800, 0x01148baa +0, 148, 148, 1, 76800, 0xff45dfbe +0, 149, 149, 1, 76800, 0x05f8db6e +0, 150, 150, 1, 76800, 0x9a129a6e +0, 151, 151, 1, 76800, 0x93f8749e +0, 152, 152, 1, 76800, 0x7dd1f89b +0, 153, 153, 1, 76800, 0x3c81b16f +0, 154, 154, 1, 76800, 0xefc3e567 +0, 155, 155, 1, 76800, 0x9fe26222 +0, 156, 156, 1, 76800, 0x85018ef4 +0, 157, 157, 1, 76800, 0x0aa984a4 +0, 158, 158, 1, 76800, 0xea45538e +0, 159, 159, 1, 76800, 0x8e112454 +0, 160, 160, 1, 76800, 0xab76bf13 +0, 161, 161, 1, 76800, 0x9c1e32a1 +0, 162, 162, 1, 76800, 0xedb88ef8 +0, 163, 163, 1, 76800, 0x5371d475 +0, 164, 164, 1, 76800, 0x631a36eb +0, 165, 165, 1, 76800, 0x6d4403ef +0, 166, 166, 1, 76800, 0xdd67190b +0, 167, 167, 1, 76800, 0x41b054a5 +0, 168, 168, 1, 76800, 0x53f55a99 +0, 169, 169, 1, 76800, 0x93182147 +0, 170, 170, 1, 76800, 0xcce0dd8c +0, 171, 171, 1, 76800, 0x51f68932 +0, 172, 172, 1, 76800, 0x3d5e2f4a +0, 173, 173, 1, 76800, 0x8baed3b3 +0, 174, 174, 1, 76800, 0xdc66509b +0, 175, 175, 1, 76800, 0x1b81fb6c +0, 176, 176, 1, 76800, 0x63e1f954 +0, 177, 177, 1, 76800, 0x75fd36a1 +0, 178, 178, 1, 76800, 0x68f1a18f +0, 179, 179, 1, 76800, 0x8b0a1c76 +0, 180, 180, 1, 76800, 0x6d7b9810 +0, 181, 181, 1, 76800, 0x5dcdee4a +0, 182, 182, 1, 76800, 0xf97c2187 +0, 183, 183, 1, 76800, 0x3e575d0d +0, 184, 184, 1, 76800, 0x4fc6a723 +0, 185, 185, 1, 76800, 0xf5dcde6d +0, 186, 186, 1, 76800, 0xc42204d2 +0, 187, 187, 1, 76800, 0x12cff747 +0, 188, 188, 1, 76800, 0xa11ae405 +0, 189, 189, 1, 76800, 0x7cd8d07f +0, 190, 190, 1, 76800, 0xa100a8fb +0, 191, 191, 1, 76800, 0x7e9e945b +0, 192, 192, 1, 76800, 0x2ead8009 +0, 193, 193, 1, 76800, 0x755a7399 +0, 194, 194, 1, 76800, 0x25324c65 +0, 195, 195, 1, 76800, 0xe12ad1a4 +0, 196, 196, 1, 76800, 0x02366ec8 +0, 197, 197, 1, 76800, 0x1e8f0d5a +0, 198, 198, 1, 76800, 0x0235d45b +0, 199, 199, 1, 76800, 0x26d2b581 +0, 200, 200, 1, 76800, 0x304f1ccb +0, 201, 201, 1, 76800, 0x4e1625ff +0, 202, 202, 1, 76800, 0xfecc1f5b +0, 203, 203, 1, 76800, 0x499714ff +0, 204, 204, 1, 76800, 0xff240d1b +0, 205, 205, 1, 76800, 0xc257ebf8 +0, 206, 206, 1, 76800, 0xf752cdfc +0, 207, 207, 1, 76800, 0xb031b7cc +0, 208, 208, 1, 76800, 0xb3f29c84 +0, 209, 209, 1, 76800, 0x77f66fd4 +0, 210, 210, 1, 76800, 0x9ef247ec +0, 211, 211, 1, 76800, 0xdc32180c +0, 212, 212, 1, 76800, 0x41bed8e5 +0, 213, 213, 1, 76800, 0x931b8b05 +0, 214, 214, 1, 76800, 0xe45b36f9 +0, 215, 215, 1, 76800, 0xc71bd626 +0, 216, 216, 1, 76800, 0x5b637aca +0, 217, 217, 1, 76800, 0x3e8d1752 +0, 218, 218, 1, 76800, 0x5f9ca28b +0, 219, 219, 1, 76800, 0x56d937bf +0, 220, 220, 1, 76800, 0xe811c010 +0, 221, 221, 1, 76800, 0xca414fe8 +0, 222, 222, 1, 76800, 0x774ef141 +0, 223, 223, 1, 76800, 0xa44282f9 +0, 224, 224, 1, 76800, 0x30690641 +0, 225, 225, 1, 76800, 0xa833ad96 +0, 226, 226, 1, 76800, 0xe18d4932 +0, 227, 227, 1, 76800, 0xf934c0af +0, 228, 228, 1, 76800, 0xdbc361b7 +0, 229, 229, 1, 76800, 0x7e0d0077 +0, 230, 230, 1, 76800, 0x2d3faaa4 +0, 231, 231, 1, 76800, 0xfa1a7708 +0, 232, 232, 1, 76800, 0xb60870a0 +0, 233, 233, 1, 76800, 0x5f5f7682 +0, 234, 234, 1, 76800, 0x47dc7564 +0, 235, 235, 1, 76800, 0x48f984c8 +0, 236, 236, 1, 76800, 0x7b0892a8 +0, 237, 237, 1, 76800, 0x56a0c014 +0, 238, 238, 1, 76800, 0x5dd1d854 +0, 239, 239, 1, 76800, 0xdfb0f698 +0, 240, 240, 1, 76800, 0xda051775 +0, 241, 241, 1, 76800, 0xa19c3eb1 +0, 242, 242, 1, 76800, 0xda74780d +0, 243, 243, 1, 76800, 0x5dd28f7f +0, 244, 244, 1, 76800, 0xf23fa74b +0, 245, 245, 1, 76800, 0x4014c817 +0, 246, 246, 1, 76800, 0x0954ead7 +0, 247, 247, 1, 76800, 0xa8e319fe +0, 248, 248, 1, 76800, 0x722e3f2c +0, 249, 249, 1, 76800, 0xbee3702c +0, 250, 250, 1, 76800, 0x19599172 +0, 251, 251, 1, 76800, 0x61c18ef0 +0, 252, 252, 1, 76800, 0xfb13780e +0, 253, 253, 1, 76800, 0xd86e6b80 +0, 254, 254, 1, 76800, 0xf5cc6abc +0, 255, 255, 1, 76800, 0x5fe86912 +0, 256, 256, 1, 76800, 0xba3d6efe +0, 257, 257, 1, 76800, 0x23927f3e +0, 258, 258, 1, 76800, 0x6947b124 +0, 259, 259, 1, 76800, 0x80e9f682 +0, 260, 260, 1, 76800, 0x6a393a9b +0, 261, 261, 1, 76800, 0x5aff928b +0, 262, 262, 1, 76800, 0xd81dfbab +0, 263, 263, 1, 76800, 0x950166ca +0, 264, 264, 1, 76800, 0xc7e6c6f0 +0, 265, 265, 1, 76800, 0x9aa328a1 +0, 266, 266, 1, 76800, 0x17de849b +0, 267, 267, 1, 76800, 0xc4f7d9e3 +0, 268, 268, 1, 76800, 0x3f372bee +0, 269, 269, 1, 76800, 0xaffc6e06 +0, 270, 270, 1, 76800, 0x94b8875c +0, 271, 271, 1, 76800, 0xb713a42a +0, 272, 272, 1, 76800, 0x8a89c232 +0, 273, 273, 1, 76800, 0xde65db42 +0, 274, 274, 1, 76800, 0x2c7dfaac +0, 275, 275, 1, 76800, 0xa9202a71 +0, 276, 276, 1, 76800, 0x78715817 +0, 277, 277, 1, 76800, 0x3c0d8bb9 +0, 278, 278, 1, 76800, 0xa4cdbb61 +0, 279, 279, 1, 76800, 0xb9abd6ad +0, 280, 280, 1, 76800, 0xecef0146 +0, 281, 281, 1, 76800, 0x82f22350 +0, 282, 282, 1, 76800, 0x17f442f2 +0, 283, 283, 1, 76800, 0xa6ea59e4 +0, 284, 284, 1, 76800, 0x62e452e6 +0, 285, 285, 1, 76800, 0xce2c454e +0, 286, 286, 1, 76800, 0x27a821b4 +0, 287, 287, 1, 76800, 0x899f0f98 +0, 288, 288, 1, 76800, 0xe25dffb7 +0, 289, 289, 1, 76800, 0xa288ff17 +0, 290, 290, 1, 76800, 0x678500b0 +0, 291, 291, 1, 76800, 0xfe9c1216 +0, 292, 292, 1, 76800, 0x56da27a0 +0, 293, 293, 1, 76800, 0x62f239be +0, 294, 294, 1, 76800, 0xa0a74b90 +0, 295, 295, 1, 76800, 0xc2f969a0 +0, 296, 296, 1, 76800, 0xe1ca7ad4 +0, 297, 297, 1, 76800, 0xf7938a7e +0, 298, 298, 1, 76800, 0x3a339640 +0, 299, 299, 1, 76800, 0x44b79e0c +0, 300, 300, 1, 76800, 0xd6e78ee6 +0, 301, 301, 1, 76800, 0xeecd91b6 +0, 302, 302, 1, 76800, 0x3ea99774 +0, 303, 303, 1, 76800, 0xd399967e +0, 304, 304, 1, 76800, 0xc1e38de6 +0, 305, 305, 1, 76800, 0xd8ec7958 +0, 306, 306, 1, 76800, 0xe9e26992 +0, 307, 307, 1, 76800, 0xb6ee580a +0, 308, 308, 1, 76800, 0xd56852f4 +0, 309, 309, 1, 76800, 0x997f4b9c +0, 310, 310, 1, 76800, 0xc62841a6 +0, 311, 311, 1, 76800, 0x58063cee +0, 312, 312, 1, 76800, 0xbaaf3e16 +0, 313, 313, 1, 76800, 0xac043a50 +0, 314, 314, 1, 76800, 0xa6c73a14 +0, 315, 315, 1, 76800, 0x1d614480 +0, 316, 316, 1, 76800, 0xc4e63b4c +0, 317, 317, 1, 76800, 0x9d393b06 +0, 318, 318, 1, 76800, 0x9a902ef4 +0, 319, 319, 1, 76800, 0x6f872c74 +0, 320, 320, 1, 76800, 0x288a2f92 +0, 321, 321, 1, 76800, 0xb4832d76 +0, 322, 322, 1, 76800, 0x99e21c30 +0, 323, 323, 1, 76800, 0x287f0c90 +0, 324, 324, 1, 76800, 0xfd8bfe3f +0, 325, 325, 1, 76800, 0x0a62f1d3 +0, 326, 326, 1, 76800, 0x2928eb4d +0, 327, 327, 1, 76800, 0x2acfe487 +0, 328, 328, 1, 76800, 0x2b2ce339 +0, 329, 329, 1, 76800, 0x25d2e4c5 +0, 330, 330, 1, 76800, 0x0c14dd95 +0, 331, 331, 1, 76800, 0xfe8fdf29 +0, 332, 332, 1, 76800, 0x3afedd29 +0, 333, 333, 1, 76800, 0x3c85dd05 +0, 334, 334, 1, 76800, 0x9981db4d +0, 335, 335, 1, 76800, 0xc4f9d501 +0, 336, 336, 1, 76800, 0xccd4d2d5 +0, 337, 337, 1, 76800, 0x229fdc41 +0, 338, 338, 1, 76800, 0x305de4ad +0, 339, 339, 1, 76800, 0xb40eaef6 +0, 340, 340, 1, 76800, 0xb14f0431 +0, 341, 341, 1, 76800, 0x346b9280 +0, 342, 342, 1, 76800, 0x9198b4c0 +0, 343, 343, 1, 76800, 0xba1fde8f +0, 344, 344, 1, 76800, 0x45260fa2 +0, 345, 345, 1, 76800, 0x69dd33cb +0, 346, 346, 1, 76800, 0x6e10c599 +0, 347, 347, 1, 76800, 0x9dd33a40 +0, 348, 348, 1, 76800, 0x9dc7eb47 +0, 349, 349, 1, 76800, 0x8776f7df +0, 350, 350, 1, 76800, 0xfd674e91 +0, 351, 351, 1, 76800, 0xcd69d151 +0, 352, 352, 1, 76800, 0xa8f69f9e +0, 353, 353, 1, 76800, 0xf83587a2 +0, 354, 354, 1, 76800, 0xcb656e2a +0, 355, 355, 1, 76800, 0x8c5e6b82 +0, 356, 356, 1, 76800, 0x880d5f56 +0, 357, 357, 1, 76800, 0x93405cce +0, 358, 358, 1, 76800, 0x51345c1e -- 1.7.9.5
_______________________________________________ libav-devel mailing list [email protected] https://lists.libav.org/mailman/listinfo/libav-devel
