1
0
mirror of https://github.com/FFmpeg/FFmpeg.git synced 2025-01-24 13:56:33 +02:00

Merge remote-tracking branch 'qatar/master'

* qatar/master: (35 commits)
  fix space type in Changelog
  ZeroCodec Decoder
  RealAudio Lossless decoder
  rtpenc: Use AVFormatContext.packet_size instead of a private option
  url: Document the expected behaviour of url_read
  libavformat: Use AVFormatContext.probesize in init_input
  docs: Fix a stray reference to tags in the generic doxy on dicts
  cosmetics: Align some AVInput/OutputFormat declarations
  zmbv: check decompress result
  zmbv: correct indentation
  adpcm: convert adpcm_thp to bytestream2.
  adpcm: convert adpcm_yamaha to bytestream2.
  adpcm: convert adpcm_swf to bytestream2.
  adpcm: convert adpcm_sbpro to bytestream2.
  adpcm: convert adpcm_ct to bytestream2.
  adpcm: convert adpcm_ima_amv/smjpeg to bytestream2.
  adpcm: convert adpcm_ea_xas to bytestream2.
  adpcm: convert adpcm_ea_r1/2/3 to bytestream2.
  adpcm: convert ea_maxis_xa to bytestream2.
  adpcm: convert adpcm_ea to bytestream2.
  ...

Conflicts:
	Changelog
	libavcodec/Makefile
	libavcodec/adpcm.c
	libavcodec/allcodecs.c
	libavcodec/avcodec.h
	libavcodec/version.h
	libavcodec/zerocodec.c
	libavcodec/zmbv.c
	libavformat/riff.c
	libavformat/url.h
	tests/ref/fate/truemotion1-15
	tests/ref/fate/truemotion1-24

Merged-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
Michael Niedermayer 2012-03-19 23:40:03 +01:00
commit 479fb7b8af
25 changed files with 10988 additions and 491 deletions

View File

@ -16,6 +16,7 @@ version next:
- swapuv filter - swapuv filter
- bbox filter - bbox filter
- XBM encoder - XBM encoder
- RealAudio Lossless decoder
- ZeroCodec decoder - ZeroCodec decoder

View File

@ -792,6 +792,7 @@ following image formats are supported:
@tab Real 28800 bit/s codec @tab Real 28800 bit/s codec
@item RealAudio 3.0 (dnet) @tab IX @tab X @item RealAudio 3.0 (dnet) @tab IX @tab X
@tab Real low bitrate AC-3 codec @tab Real low bitrate AC-3 codec
@item RealAudio Lossless @tab @tab X
@item RealAudio SIPR / ACELP.NET @tab @tab X @item RealAudio SIPR / ACELP.NET @tab @tab X
@item Shorten @tab @tab X @item Shorten @tab @tab X
@item Sierra VMD audio @tab @tab X @item Sierra VMD audio @tab @tab X

View File

@ -355,6 +355,7 @@ OBJS-$(CONFIG_R210_ENCODER) += r210enc.o
OBJS-$(CONFIG_RA_144_DECODER) += ra144dec.o ra144.o celp_filters.o OBJS-$(CONFIG_RA_144_DECODER) += ra144dec.o ra144.o celp_filters.o
OBJS-$(CONFIG_RA_144_ENCODER) += ra144enc.o ra144.o celp_filters.o OBJS-$(CONFIG_RA_144_ENCODER) += ra144enc.o ra144.o celp_filters.o
OBJS-$(CONFIG_RA_288_DECODER) += ra288.o celp_math.o celp_filters.o OBJS-$(CONFIG_RA_288_DECODER) += ra288.o celp_math.o celp_filters.o
OBJS-$(CONFIG_RALF_DECODER) += ralf.o
OBJS-$(CONFIG_RAWVIDEO_DECODER) += rawdec.o OBJS-$(CONFIG_RAWVIDEO_DECODER) += rawdec.o
OBJS-$(CONFIG_RAWVIDEO_ENCODER) += rawenc.o OBJS-$(CONFIG_RAWVIDEO_ENCODER) += rawenc.o
OBJS-$(CONFIG_RL2_DECODER) += rl2.o OBJS-$(CONFIG_RL2_DECODER) += rl2.o

File diff suppressed because it is too large Load Diff

View File

@ -305,6 +305,7 @@ void avcodec_register_all(void)
REGISTER_DECODER (QDM2, qdm2); REGISTER_DECODER (QDM2, qdm2);
REGISTER_ENCDEC (RA_144, ra_144); REGISTER_ENCDEC (RA_144, ra_144);
REGISTER_DECODER (RA_288, ra_288); REGISTER_DECODER (RA_288, ra_288);
REGISTER_DECODER (RALF, ralf);
REGISTER_DECODER (SHORTEN, shorten); REGISTER_DECODER (SHORTEN, shorten);
REGISTER_DECODER (SIPR, sipr); REGISTER_DECODER (SIPR, sipr);
REGISTER_DECODER (SMACKAUD, smackaud); REGISTER_DECODER (SMACKAUD, smackaud);

View File

@ -395,8 +395,9 @@ enum CodecID {
CODEC_ID_8SVX_EXP, CODEC_ID_8SVX_EXP,
CODEC_ID_8SVX_FIB, CODEC_ID_8SVX_FIB,
CODEC_ID_BMV_AUDIO, CODEC_ID_BMV_AUDIO,
CODEC_ID_RALF,
CODEC_ID_FFWAVESYNTH = MKBETAG('F','F','W','S'), CODEC_ID_FFWAVESYNTH = MKBETAG('F','F','W','S'),
CODEC_ID_8SVX_RAW = MKBETAG('8','S','V','X'), CODEC_ID_8SVX_RAW = MKBETAG('8','S','V','X'),
CODEC_ID_SONIC = MKBETAG('S','O','N','C'), CODEC_ID_SONIC = MKBETAG('S','O','N','C'),
CODEC_ID_SONIC_LS = MKBETAG('S','O','N','L'), CODEC_ID_SONIC_LS = MKBETAG('S','O','N','L'),

536
libavcodec/ralf.c Normal file
View File

@ -0,0 +1,536 @@
/*
* RealAudio Lossless decoder
*
* Copyright (c) 2012 Konstantin Shishkov
*
* 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
*/
/**
* @file
* This is a decoder for Real Audio Lossless format.
* Dedicated to the mastermind behind it, Ralph Wiggum.
*/
#include "avcodec.h"
#include "get_bits.h"
#include "golomb.h"
#include "unary.h"
#include "libavutil/audioconvert.h"
#include "ralfdata.h"
#define FILTER_NONE 0
#define FILTER_RAW 642
typedef struct VLCSet {
VLC filter_params;
VLC bias;
VLC coding_mode;
VLC filter_coeffs[10][11];
VLC short_codes[15];
VLC long_codes[125];
} VLCSet;
#define RALF_MAX_PKT_SIZE 8192
typedef struct RALFContext {
AVFrame frame;
int version;
int max_frame_size;
VLCSet sets[3];
int32_t channel_data[2][4096];
int filter_params; ///< combined filter parameters for the current channel data
int filter_length; ///< length of the filter for the current channel data
int filter_bits; ///< filter precision for the current channel data
int32_t filter[64];
int bias[2]; ///< a constant value added to channel data after filtering
int num_blocks; ///< number of blocks inside the frame
int sample_offset;
int block_size[1 << 12]; ///< size of the blocks
int block_pts[1 << 12]; ///< block start time (in milliseconds)
uint8_t pkt[16384];
int has_pkt;
} RALFContext;
#define MAX_ELEMS 644 // no RALF table uses more than that
static int init_ralf_vlc(VLC *vlc, const uint8_t *data, int elems)
{
uint8_t lens[MAX_ELEMS];
uint16_t codes[MAX_ELEMS];
int counts[17], prefixes[18];
int i, cur_len;
int max_bits = 0;
GetBitContext gb;
init_get_bits(&gb, data, elems * 4);
for (i = 0; i <= 16; i++)
counts[i] = 0;
for (i = 0; i < elems; i++) {
cur_len = get_bits(&gb, 4) + 1;
counts[cur_len]++;
max_bits = FFMAX(max_bits, cur_len);
lens[i] = cur_len;
}
prefixes[1] = 0;
for (i = 1; i <= 16; i++)
prefixes[i + 1] = (prefixes[i] + counts[i]) << 1;
for (i = 0; i < elems; i++)
codes[i] = prefixes[lens[i]]++;
return ff_init_vlc_sparse(vlc, FFMIN(max_bits, 9), elems,
lens, 1, 1, codes, 2, 2, NULL, 0, 0, 0);
}
static av_cold int decode_close(AVCodecContext *avctx)
{
RALFContext *ctx = avctx->priv_data;
int i, j, k;
for (i = 0; i < 3; i++) {
ff_free_vlc(&ctx->sets[i].filter_params);
ff_free_vlc(&ctx->sets[i].bias);
ff_free_vlc(&ctx->sets[i].coding_mode);
for (j = 0; j < 10; j++)
for (k = 0; k < 11; k++)
ff_free_vlc(&ctx->sets[i].filter_coeffs[j][k]);
for (j = 0; j < 15; j++)
ff_free_vlc(&ctx->sets[i].short_codes[j]);
for (j = 0; j < 125; j++)
ff_free_vlc(&ctx->sets[i].long_codes[j]);
}
return 0;
}
static av_cold int decode_init(AVCodecContext *avctx)
{
RALFContext *ctx = avctx->priv_data;
int i, j, k;
int ret;
if (avctx->extradata_size < 24 || memcmp(avctx->extradata, "LSD:", 4)) {
av_log(avctx, AV_LOG_ERROR, "Extradata is not groovy, dude\n");
return AVERROR_INVALIDDATA;
}
ctx->version = AV_RB16(avctx->extradata + 4);
if (ctx->version != 0x103) {
av_log_ask_for_sample(avctx, "unknown version %X\n", ctx->version);
return AVERROR_PATCHWELCOME;
}
avctx->channels = AV_RB16(avctx->extradata + 8);
avctx->sample_rate = AV_RB32(avctx->extradata + 12);
if (avctx->channels < 1 || avctx->channels > 2
|| avctx->sample_rate < 8000 || avctx->sample_rate > 96000) {
av_log(avctx, AV_LOG_ERROR, "Invalid coding parameters %d Hz %d ch\n",
avctx->sample_rate, avctx->channels);
return AVERROR_INVALIDDATA;
}
avctx->sample_fmt = AV_SAMPLE_FMT_S16;
avctx->channel_layout = (avctx->channels == 2) ? AV_CH_LAYOUT_STEREO
: AV_CH_LAYOUT_MONO;
avcodec_get_frame_defaults(&ctx->frame);
avctx->coded_frame = &ctx->frame;
ctx->max_frame_size = AV_RB32(avctx->extradata + 16);
if (ctx->max_frame_size > (1 << 20) || !ctx->max_frame_size) {
av_log(avctx, AV_LOG_ERROR, "invalid frame size %d\n",
ctx->max_frame_size);
}
ctx->max_frame_size = FFMAX(ctx->max_frame_size, avctx->sample_rate);
for (i = 0; i < 3; i++) {
ret = init_ralf_vlc(&ctx->sets[i].filter_params, filter_param_def[i],
FILTERPARAM_ELEMENTS);
if (ret < 0) {
decode_close(avctx);
return ret;
}
ret = init_ralf_vlc(&ctx->sets[i].bias, bias_def[i], BIAS_ELEMENTS);
if (ret < 0) {
decode_close(avctx);
return ret;
}
ret = init_ralf_vlc(&ctx->sets[i].coding_mode, coding_mode_def[i],
CODING_MODE_ELEMENTS);
if (ret < 0) {
decode_close(avctx);
return ret;
}
for (j = 0; j < 10; j++) {
for (k = 0; k < 11; k++) {
ret = init_ralf_vlc(&ctx->sets[i].filter_coeffs[j][k],
filter_coeffs_def[i][j][k],
FILTER_COEFFS_ELEMENTS);
if (ret < 0) {
decode_close(avctx);
return ret;
}
}
}
for (j = 0; j < 15; j++) {
ret = init_ralf_vlc(&ctx->sets[i].short_codes[j],
short_codes_def[i][j], SHORT_CODES_ELEMENTS);
if (ret < 0) {
decode_close(avctx);
return ret;
}
}
for (j = 0; j < 125; j++) {
ret = init_ralf_vlc(&ctx->sets[i].long_codes[j],
long_codes_def[i][j], LONG_CODES_ELEMENTS);
if (ret < 0) {
decode_close(avctx);
return ret;
}
}
}
return 0;
}
static inline int extend_code(GetBitContext *gb, int val, int range, int bits)
{
if (val == 0) {
val = -range - get_ue_golomb(gb);
} else if (val == range * 2) {
val = range + get_ue_golomb(gb);
} else {
val -= range;
}
if (bits)
val = (val << bits) | get_bits(gb, bits);
return val;
}
static int decode_channel(RALFContext *ctx, GetBitContext *gb, int ch,
int length, int mode, int bits)
{
int i, t;
int code_params;
VLCSet *set = ctx->sets + mode;
VLC *code_vlc; int range, range2, add_bits;
int *dst = ctx->channel_data[ch];
ctx->filter_params = get_vlc2(gb, set->filter_params.table, 9, 2);
ctx->filter_bits = (ctx->filter_params - 2) >> 6;
ctx->filter_length = ctx->filter_params - (ctx->filter_bits << 6) - 1;
if (ctx->filter_params == FILTER_RAW) {
for (i = 0; i < length; i++)
dst[i] = get_bits(gb, bits);
ctx->bias[ch] = 0;
return 0;
}
ctx->bias[ch] = get_vlc2(gb, set->bias.table, 9, 2);
ctx->bias[ch] = extend_code(gb, ctx->bias[ch], 127, 4);
if (ctx->filter_params == FILTER_NONE) {
memset(dst, 0, sizeof(*dst) * length);
return 0;
}
if (ctx->filter_params > 1) {
int cmode = 0, coeff = 0;
VLC *vlc = set->filter_coeffs[ctx->filter_bits] + 5;
add_bits = ctx->filter_bits;
for (i = 0; i < ctx->filter_length; i++) {
t = get_vlc2(gb, vlc[cmode].table, vlc[cmode].bits, 2);
t = extend_code(gb, t, 21, add_bits);
if (!cmode)
coeff -= 12 << add_bits;
coeff = t - coeff;
ctx->filter[i] = coeff;
cmode = coeff >> add_bits;
if (cmode < 0) {
cmode = -1 - av_log2(-cmode);
if (cmode < -5)
cmode = -5;
} else if (cmode > 0) {
cmode = 1 + av_log2(cmode);
if (cmode > 5)
cmode = 5;
}
}
}
code_params = get_vlc2(gb, set->coding_mode.table, set->coding_mode.bits, 2);
if (code_params >= 15) {
add_bits = av_clip((code_params / 5 - 3) / 2, 0, 10);
if (add_bits > 9 && (code_params % 5) != 2)
add_bits--;
range = 10;
range2 = 21;
code_vlc = set->long_codes + code_params - 15;
} else {
add_bits = 0;
range = 6;
range2 = 13;
code_vlc = set->short_codes + code_params;
}
for (i = 0; i < length; i += 2) {
int code1, code2;
t = get_vlc2(gb, code_vlc->table, code_vlc->bits, 2);
code1 = t / range2;
code2 = t % range2;
dst[i] = extend_code(gb, code1, range, 0) << add_bits;
dst[i + 1] = extend_code(gb, code2, range, 0) << add_bits;
if (add_bits) {
dst[i] |= get_bits(gb, add_bits);
dst[i + 1] |= get_bits(gb, add_bits);
}
}
return 0;
}
static void apply_lpc(RALFContext *ctx, int ch, int length, int bits)
{
int i, j, acc;
int *audio = ctx->channel_data[ch];
int bias = 1 << (ctx->filter_bits - 1);
int max_clip = (1 << bits) - 1, min_clip = -max_clip - 1;
for (i = 1; i < length; i++) {
int flen = FFMIN(ctx->filter_length, i);
acc = 0;
for (j = 0; j < flen; j++)
acc += ctx->filter[j] * audio[i - j - 1];
if (acc < 0) {
acc = (acc + bias - 1) >> ctx->filter_bits;
acc = FFMAX(acc, min_clip);
} else {
acc = (acc + bias) >> ctx->filter_bits;
acc = FFMIN(acc, max_clip);
}
audio[i] += acc;
}
}
static int decode_block(AVCodecContext *avctx, GetBitContext *gb, int16_t *dst)
{
RALFContext *ctx = avctx->priv_data;
int len, ch, ret;
int dmode, mode[2], bits[2];
int *ch0, *ch1;
int i, t, t2;
len = 12 - get_unary(gb, 0, 6);
if (len <= 7) len ^= 1; // codes for length = 6 and 7 are swapped
len = 1 << len;
if (ctx->sample_offset + len > ctx->max_frame_size) {
av_log(avctx, AV_LOG_ERROR,
"Decoder's stomach is crying, it ate too many samples\n");
return AVERROR_INVALIDDATA;
}
if (avctx->channels > 1)
dmode = get_bits(gb, 2) + 1;
else
dmode = 0;
mode[0] = (dmode == 4) ? 1 : 0;
mode[1] = (dmode >= 2) ? 2 : 0;
bits[0] = 16;
bits[1] = (mode[1] == 2) ? 17 : 16;
for (ch = 0; ch < avctx->channels; ch++) {
if ((ret = decode_channel(ctx, gb, ch, len, mode[ch], bits[ch])) < 0)
return ret;
if (ctx->filter_params > 1 && ctx->filter_params != FILTER_RAW) {
ctx->filter_bits += 3;
apply_lpc(ctx, ch, len, bits[ch]);
}
if (get_bits_left(gb) < 0)
return AVERROR_INVALIDDATA;
}
ch0 = ctx->channel_data[0];
ch1 = ctx->channel_data[1];
switch (dmode) {
case 0:
for (i = 0; i < len; i++)
*dst++ = ch0[i] + ctx->bias[0];
break;
case 1:
for (i = 0; i < len; i++) {
*dst++ = ch0[i] + ctx->bias[0];
*dst++ = ch1[i] + ctx->bias[1];
}
break;
case 2:
for (i = 0; i < len; i++) {
ch0[i] += ctx->bias[0];
*dst++ = ch0[i];
*dst++ = ch0[i] - (ch1[i] + ctx->bias[1]);
}
break;
case 3:
for (i = 0; i < len; i++) {
t = ch0[i] + ctx->bias[0];
t2 = ch1[i] + ctx->bias[1];
*dst++ = t + t2;
*dst++ = t;
}
break;
case 4:
for (i = 0; i < len; i++) {
t = ch1[i] + ctx->bias[1];
t2 = ((ch0[i] + ctx->bias[0]) << 1) | (t & 1);
*dst++ = (t2 + t) / 2;
*dst++ = (t2 - t) / 2;
}
break;
}
ctx->sample_offset += len;
return 0;
}
static int decode_frame(AVCodecContext *avctx, void *data, int *got_frame_ptr,
AVPacket *avpkt)
{
RALFContext *ctx = avctx->priv_data;
int16_t *samples;
int ret;
GetBitContext gb;
int table_size, table_bytes, i;
const uint8_t *src, *block_pointer;
int src_size;
int bytes_left;
if (ctx->has_pkt) {
ctx->has_pkt = 0;
table_bytes = (AV_RB16(avpkt->data) + 7) >> 3;
if (table_bytes + 3 > avpkt->size || avpkt->size > RALF_MAX_PKT_SIZE) {
av_log(avctx, AV_LOG_ERROR, "Wrong packet's breath smells of wrong data!\n");
return AVERROR_INVALIDDATA;
}
if (memcmp(ctx->pkt, avpkt->data, 2 + table_bytes)) {
av_log(avctx, AV_LOG_ERROR, "Wrong packet tails are wrong!\n");
return AVERROR_INVALIDDATA;
}
src = ctx->pkt;
src_size = RALF_MAX_PKT_SIZE + avpkt->size;
memcpy(ctx->pkt + RALF_MAX_PKT_SIZE, avpkt->data + 2 + table_bytes,
avpkt->size - 2 - table_bytes);
} else {
if (avpkt->size == RALF_MAX_PKT_SIZE) {
memcpy(ctx->pkt, avpkt->data, avpkt->size);
ctx->has_pkt = 1;
*got_frame_ptr = 0;
return avpkt->size;
}
src = avpkt->data;
src_size = avpkt->size;
}
ctx->frame.nb_samples = ctx->max_frame_size;
if ((ret = avctx->get_buffer(avctx, &ctx->frame)) < 0) {
av_log(avctx, AV_LOG_ERROR, "Me fail get_buffer()? That's unpossible!\n");
return ret;
}
samples = (int16_t*)ctx->frame.data[0];
if (src_size < 5) {
av_log(avctx, AV_LOG_ERROR, "too short packets are too short!\n");
return AVERROR_INVALIDDATA;
}
table_size = AV_RB16(src);
table_bytes = (table_size + 7) >> 3;
if (src_size < table_bytes + 3) {
av_log(avctx, AV_LOG_ERROR, "short packets are short!\n");
return AVERROR_INVALIDDATA;
}
init_get_bits(&gb, src + 2, table_size);
ctx->num_blocks = 0;
while (get_bits_left(&gb) > 0) {
ctx->block_size[ctx->num_blocks] = get_bits(&gb, 15);
if (get_bits1(&gb)) {
ctx->block_pts[ctx->num_blocks] = get_bits(&gb, 9);
} else {
ctx->block_pts[ctx->num_blocks] = 0;
}
ctx->num_blocks++;
}
block_pointer = src + table_bytes + 2;
bytes_left = src_size - table_bytes - 2;
ctx->sample_offset = 0;
for (i = 0; i < ctx->num_blocks; i++) {
if (bytes_left < ctx->block_size[i]) {
av_log(avctx, AV_LOG_ERROR, "I'm pedaling backwards\n");
break;
}
init_get_bits(&gb, block_pointer, ctx->block_size[i] * 8);
if (decode_block(avctx, &gb, samples + ctx->sample_offset
* avctx->channels) < 0) {
av_log(avctx, AV_LOG_ERROR, "Sir, I got carsick in your office. Not decoding the rest of packet.\n");
break;
}
block_pointer += ctx->block_size[i];
bytes_left -= ctx->block_size[i];
}
ctx->frame.nb_samples = ctx->sample_offset;
*got_frame_ptr = ctx->sample_offset > 0;
*(AVFrame*)data = ctx->frame;
return avpkt->size;
}
static void decode_flush(AVCodecContext *avctx)
{
RALFContext *ctx = avctx->priv_data;
ctx->has_pkt = 0;
}
AVCodec ff_ralf_decoder = {
.name = "ralf",
.type = AVMEDIA_TYPE_AUDIO,
.id = CODEC_ID_RALF,
.priv_data_size = sizeof(RALFContext),
.init = decode_init,
.close = decode_close,
.decode = decode_frame,
.flush = decode_flush,
.capabilities = CODEC_CAP_DR1,
.long_name = NULL_IF_CONFIG_SMALL("RealAudio Lossless")
};

9920
libavcodec/ralfdata.h Normal file

File diff suppressed because it is too large Load Diff

View File

@ -2036,7 +2036,7 @@ int av_get_audio_frame_duration(AVCodecContext *avctx, int frame_bytes)
case CODEC_ID_ADPCM_IMA_WAV: case CODEC_ID_ADPCM_IMA_WAV:
return blocks * (1 + (ba - 4 * ch) / (4 * ch) * 8); return blocks * (1 + (ba - 4 * ch) / (4 * ch) * 8);
case CODEC_ID_ADPCM_IMA_DK3: case CODEC_ID_ADPCM_IMA_DK3:
return blocks * (((ba - 16) * 8 / 3) / ch); return blocks * (((ba - 16) * 2 / 3 * 4) / ch);
case CODEC_ID_ADPCM_IMA_DK4: case CODEC_ID_ADPCM_IMA_DK4:
return blocks * (1 + (ba - 4 * ch) * 2 / ch); return blocks * (1 + (ba - 4 * ch) * 2 / ch);
case CODEC_ID_ADPCM_MS: case CODEC_ID_ADPCM_MS:

View File

@ -21,7 +21,7 @@
#define AVCODEC_VERSION_H #define AVCODEC_VERSION_H
#define LIBAVCODEC_VERSION_MAJOR 54 #define LIBAVCODEC_VERSION_MAJOR 54
#define LIBAVCODEC_VERSION_MINOR 11 #define LIBAVCODEC_VERSION_MINOR 12
#define LIBAVCODEC_VERSION_MICRO 100 #define LIBAVCODEC_VERSION_MICRO 100
#define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \ #define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \

View File

@ -19,6 +19,7 @@
*/ */
#include <zlib.h> #include <zlib.h>
#include "avcodec.h" #include "avcodec.h"
typedef struct { typedef struct {
@ -75,7 +76,8 @@ static int zerocodec_decode_frame(AVCodecContext *avctx, void *data,
zret = inflate(zstream, Z_SYNC_FLUSH); zret = inflate(zstream, Z_SYNC_FLUSH);
if (zret != Z_OK && zret != Z_STREAM_END) { if (zret != Z_OK && zret != Z_STREAM_END) {
av_log(avctx, AV_LOG_ERROR, "Inflate failed with return code: %d\n", zret); av_log(avctx, AV_LOG_ERROR,
"Inflate failed with return code: %d\n", zret);
return AVERROR(EINVAL); return AVERROR(EINVAL);
} }
@ -94,7 +96,8 @@ static int zerocodec_decode_frame(AVCodecContext *avctx, void *data,
zret = inflate(zstream, Z_SYNC_FLUSH); zret = inflate(zstream, Z_SYNC_FLUSH);
if (zret != Z_OK && zret != Z_STREAM_END) { if (zret != Z_OK && zret != Z_STREAM_END) {
av_log(avctx, AV_LOG_ERROR, "Inflate failed with return code: %d\n", zret); av_log(avctx, AV_LOG_ERROR,
"Inflate failed with return code: %d\n", zret);
return AVERROR(EINVAL); return AVERROR(EINVAL);
} }

View File

@ -495,10 +495,10 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *data_size, AVPac
c->decode_intra= decode_intra; c->decode_intra= decode_intra;
} }
if (c->decode_intra == NULL) { if (c->decode_intra == NULL) {
av_log(avctx, AV_LOG_ERROR, "Error! Got no format or no keyframe!\n"); av_log(avctx, AV_LOG_ERROR, "Error! Got no format or no keyframe!\n");
return AVERROR_INVALIDDATA; return AVERROR_INVALIDDATA;
} }
if (c->comp == 0) { //Uncompressed data if (c->comp == 0) { //Uncompressed data
memcpy(c->decomp_buf, buf, len); memcpy(c->decomp_buf, buf, len);
@ -509,7 +509,11 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *data_size, AVPac
c->zstream.avail_in = len; c->zstream.avail_in = len;
c->zstream.next_out = c->decomp_buf; c->zstream.next_out = c->decomp_buf;
c->zstream.avail_out = c->decomp_size; c->zstream.avail_out = c->decomp_size;
inflate(&c->zstream, Z_FINISH); zret = inflate(&c->zstream, Z_SYNC_FLUSH);
if (zret != Z_OK && zret != Z_STREAM_END) {
av_log(avctx, AV_LOG_ERROR, "inflate error %d\n", zret);
return AVERROR_INVALIDDATA;
}
c->decomp_len = c->zstream.total_out; c->decomp_len = c->zstream.total_out;
} }
if (c->flags & ZMBV_KEYFRAME) { if (c->flags & ZMBV_KEYFRAME) {

View File

@ -42,5 +42,6 @@ const AVCodecTag ff_rm_codec_tags[] = {
{ CODEC_ID_SIPR, MKTAG('s','i','p','r') }, { CODEC_ID_SIPR, MKTAG('s','i','p','r') },
{ CODEC_ID_AAC, MKTAG('r','a','a','c') }, { CODEC_ID_AAC, MKTAG('r','a','a','c') },
{ CODEC_ID_AAC, MKTAG('r','a','c','p') }, { CODEC_ID_AAC, MKTAG('r','a','c','p') },
{ CODEC_ID_RALF, MKTAG('L','S','D',':') },
{ CODEC_ID_NONE }, { CODEC_ID_NONE },
}; };

View File

@ -311,6 +311,15 @@ ff_rm_read_mdpr_codecdata (AVFormatContext *s, AVIOContext *pb,
/* ra type header */ /* ra type header */
if (rm_read_audio_stream_info(s, pb, st, rst, 0)) if (rm_read_audio_stream_info(s, pb, st, rst, 0))
return -1; return -1;
} else if (v == MKBETAG('L', 'S', 'D', ':')) {
avio_seek(pb, -4, SEEK_CUR);
if ((ret = rm_read_extradata(pb, st->codec, codec_data_size)) < 0)
return ret;
st->codec->codec_type = AVMEDIA_TYPE_AUDIO;
st->codec->codec_tag = AV_RL32(st->codec->extradata);
st->codec->codec_id = ff_codec_get_id(ff_rm_codec_tags,
st->codec->codec_tag);
} else { } else {
int fps; int fps;
if (avio_rl32(pb) != MKTAG('V', 'I', 'D', 'O')) { if (avio_rl32(pb) != MKTAG('V', 'I', 'D', 'O')) {

View File

@ -33,7 +33,6 @@
static const AVOption options[] = { static const AVOption options[] = {
FF_RTP_FLAG_OPTS(RTPMuxContext, flags) FF_RTP_FLAG_OPTS(RTPMuxContext, flags)
{ "payload_type", "Specify RTP payload type", offsetof(RTPMuxContext, payload_type), AV_OPT_TYPE_INT, {.dbl = -1 }, -1, 127, AV_OPT_FLAG_ENCODING_PARAM }, { "payload_type", "Specify RTP payload type", offsetof(RTPMuxContext, payload_type), AV_OPT_TYPE_INT, {.dbl = -1 }, -1, 127, AV_OPT_FLAG_ENCODING_PARAM },
{ "max_packet_size", "Max packet size", offsetof(RTPMuxContext, max_packet_size), AV_OPT_TYPE_INT, {.dbl = 0 }, 0, INT_MAX, AV_OPT_FLAG_ENCODING_PARAM },
{ NULL }, { NULL },
}; };
@ -110,21 +109,21 @@ static int rtp_write_header(AVFormatContext *s1)
s->first_rtcp_ntp_time = (s1->start_time_realtime / 1000) * 1000 + s->first_rtcp_ntp_time = (s1->start_time_realtime / 1000) * 1000 +
NTP_OFFSET_US; NTP_OFFSET_US;
if (s->max_packet_size) { if (s1->packet_size) {
if (s1->pb->max_packet_size) if (s1->pb->max_packet_size)
s->max_packet_size = FFMIN(s->max_packet_size, s1->packet_size = FFMIN(s1->packet_size,
s1->pb->max_packet_size); s1->pb->max_packet_size);
} else } else
s->max_packet_size = s1->pb->max_packet_size; s1->packet_size = s1->pb->max_packet_size;
if (s->max_packet_size <= 12) { if (s1->packet_size <= 12) {
av_log(s1, AV_LOG_ERROR, "Max packet size %d too low\n", s->max_packet_size); av_log(s1, AV_LOG_ERROR, "Max packet size %d too low\n", s1->packet_size);
return AVERROR(EIO); return AVERROR(EIO);
} }
s->buf = av_malloc(s->max_packet_size); s->buf = av_malloc(s1->packet_size);
if (s->buf == NULL) { if (s->buf == NULL) {
return AVERROR(ENOMEM); return AVERROR(ENOMEM);
} }
s->max_payload_size = s->max_packet_size - 12; s->max_payload_size = s1->packet_size - 12;
s->max_frames_per_packet = 0; s->max_frames_per_packet = 0;
if (s1->max_delay) { if (s1->max_delay) {

View File

@ -34,7 +34,6 @@ struct RTPMuxContext {
uint32_t timestamp; uint32_t timestamp;
uint32_t base_timestamp; uint32_t base_timestamp;
uint32_t cur_timestamp; uint32_t cur_timestamp;
int max_packet_size;
int max_payload_size; int max_payload_size;
int num_frames; int num_frames;

View File

@ -1924,7 +1924,7 @@ AVInputFormat ff_sdp_demuxer = {
.read_header = sdp_read_header, .read_header = sdp_read_header,
.read_packet = ff_rtsp_fetch_packet, .read_packet = ff_rtsp_fetch_packet,
.read_close = sdp_read_close, .read_close = sdp_read_close,
.priv_class = &sdp_demuxer_class .priv_class = &sdp_demuxer_class,
}; };
#endif /* CONFIG_SDP_DEMUXER */ #endif /* CONFIG_SDP_DEMUXER */
@ -2042,7 +2042,7 @@ AVInputFormat ff_rtp_demuxer = {
.read_header = rtp_read_header, .read_header = rtp_read_header,
.read_packet = ff_rtsp_fetch_packet, .read_packet = ff_rtsp_fetch_packet,
.read_close = sdp_read_close, .read_close = sdp_read_close,
.flags = AVFMT_NOFILE, .flags = AVFMT_NOFILE,
.priv_class = &rtp_demuxer_class .priv_class = &rtp_demuxer_class,
}; };
#endif /* CONFIG_RTP_DEMUXER */ #endif /* CONFIG_RTP_DEMUXER */

View File

@ -409,8 +409,8 @@ AVInputFormat ff_rtsp_demuxer = {
.read_packet = rtsp_read_packet, .read_packet = rtsp_read_packet,
.read_close = rtsp_read_close, .read_close = rtsp_read_close,
.read_seek = rtsp_read_seek, .read_seek = rtsp_read_seek,
.flags = AVFMT_NOFILE, .flags = AVFMT_NOFILE,
.read_play = rtsp_read_play, .read_play = rtsp_read_play,
.read_pause = rtsp_read_pause, .read_pause = rtsp_read_pause,
.priv_class = &rtsp_demuxer_class, .priv_class = &rtsp_demuxer_class,
}; };

View File

@ -242,6 +242,6 @@ AVOutputFormat ff_rtsp_muxer = {
.write_header = rtsp_write_header, .write_header = rtsp_write_header,
.write_packet = rtsp_write_packet, .write_packet = rtsp_write_packet,
.write_trailer = rtsp_write_close, .write_trailer = rtsp_write_close,
.flags = AVFMT_NOFILE | AVFMT_GLOBALHEADER, .flags = AVFMT_NOFILE | AVFMT_GLOBALHEADER,
.priv_class = &rtsp_muxer_class, .priv_class = &rtsp_muxer_class,
}; };

View File

@ -63,7 +63,7 @@ typedef struct URLProtocol {
/** /**
* Read data from the protocol. * Read data from the protocol.
* If data is immediately available (even less than size), EOF is * If data is immediately available (even less than size), EOF is
* reached or an error occurs (including EINTR), return immediately, * reached or an error occurs (including EINTR), return immediately.
* Otherwise: * Otherwise:
* In non-blocking mode, return AVERROR(EAGAIN) immediately. * In non-blocking mode, return AVERROR(EAGAIN) immediately.
* In blocking mode, wait for data/EOF/error with a short timeout (0.1s), * In blocking mode, wait for data/EOF/error with a short timeout (0.1s),

View File

@ -532,7 +532,7 @@ static int init_input(AVFormatContext *s, const char *filename, AVDictionary **o
if (s->pb) { if (s->pb) {
s->flags |= AVFMT_FLAG_CUSTOM_IO; s->flags |= AVFMT_FLAG_CUSTOM_IO;
if (!s->iformat) if (!s->iformat)
return av_probe_input_buffer(s->pb, &s->iformat, filename, s, 0, 0); return av_probe_input_buffer(s->pb, &s->iformat, filename, s, 0, s->probesize);
else if (s->iformat->flags & AVFMT_NOFILE) else if (s->iformat->flags & AVFMT_NOFILE)
av_log(s, AV_LOG_WARNING, "Custom AVIOContext makes no sense and " av_log(s, AV_LOG_WARNING, "Custom AVIOContext makes no sense and "
"will be ignored with AVFMT_NOFILE format.\n"); "will be ignored with AVFMT_NOFILE format.\n");
@ -548,7 +548,7 @@ static int init_input(AVFormatContext *s, const char *filename, AVDictionary **o
return ret; return ret;
if (s->iformat) if (s->iformat)
return 0; return 0;
return av_probe_input_buffer(s->pb, &s->iformat, filename, s, 0, 0); return av_probe_input_buffer(s->pb, &s->iformat, filename, s, 0, s->probesize);
} }
static AVPacket *add_to_pktbuf(AVPacketList **packet_buffer, AVPacket *pkt, static AVPacket *add_to_pktbuf(AVPacketList **packet_buffer, AVPacket *pkt,

View File

@ -99,7 +99,7 @@ av_dict_get(AVDictionary *m, const char *key, const AVDictionaryEntry *prev, int
* a dictionary struct is allocated and put in *pm. * a dictionary struct is allocated and put in *pm.
* @param key entry key to add to *pm (will be av_strduped depending on flags) * @param key entry key to add to *pm (will be av_strduped depending on flags)
* @param value entry value to add to *pm (will be av_strduped depending on flags). * @param value entry value to add to *pm (will be av_strduped depending on flags).
* Passing a NULL value will cause an existing tag to be deleted. * Passing a NULL value will cause an existing entry to be deleted.
* @return >= 0 on success otherwise an error code <0 * @return >= 0 on success otherwise an error code <0
*/ */
int av_dict_set(AVDictionary **pm, const char *key, const char *value, int flags); int av_dict_set(AVDictionary **pm, const char *key, const char *value, int flags);

View File

@ -1 +1 @@
bb952ae86c72d461aef7583685ec0a4d 62fbe4db4a49cb044f57f92cce9993c5

View File

@ -1,220 +1,220 @@
#tb 0: 1/15 #tb 0: 1/15
#tb 1: 1/44100 #tb 1: 1/44100
0, 0, 0, 1, 161280, 0x677c9fb3 0, 0, 0, 1, 161280, 0x677c9fb3
1, 0, 0, 2709, 10836, 0x2a531236 1, 0, 0, 2708, 10832, 0xe1a811fa
1, 2709, 2709, 2709, 10836, 0xc58f45af 1, 2708, 2708, 2708, 10832, 0xb47841f9
0, 1, 1, 1, 161280, 0xaa280e0a 0, 1, 1, 1, 161280, 0xaa280e0a
1, 5418, 5418, 2709, 10836, 0x436cf135 1, 5416, 5416, 2708, 10832, 0x839eedf1
0, 2, 2, 1, 161280, 0x8a4d2225 0, 2, 2, 1, 161280, 0x8a4d2225
1, 8127, 8127, 2709, 10836, 0x3a6022cc 1, 8124, 8124, 2708, 10832, 0xb48b1f60
0, 3, 3, 1, 161280, 0xf10f46a8 0, 3, 3, 1, 161280, 0xf10f46a8
1, 10836, 10836, 2709, 10836, 0x57e83a4a 1, 10832, 10832, 2708, 10832, 0x743936c0
0, 4, 4, 1, 161280, 0x98d9eab6 0, 4, 4, 1, 161280, 0x98d9eab6
1, 13545, 13545, 2709, 10836, 0xca4b3a1b 1, 13540, 13540, 2708, 10832, 0xe1f039fb
0, 5, 5, 1, 161280, 0xa543ae1e 0, 5, 5, 1, 161280, 0xa543ae1e
1, 16254, 16254, 2709, 10836, 0xc3da7536 1, 16248, 16248, 2708, 10832, 0xef00751a
0, 6, 6, 1, 161280, 0x79d717ae 0, 6, 6, 1, 161280, 0x79d717ae
1, 18963, 18963, 2709, 10836, 0x8c57d47b 1, 18956, 18956, 2708, 10832, 0x401ed099
0, 7, 7, 1, 161280, 0x1a87e2cb 0, 7, 7, 1, 161280, 0x1a87e2cb
1, 21672, 21672, 2709, 10836, 0x9a79572b 1, 21664, 21664, 2708, 10832, 0x432a53bd
0, 8, 8, 1, 161280, 0xe5c000ac 0, 8, 8, 1, 161280, 0xe5c000ac
1, 24381, 24381, 2709, 10836, 0x7dbd6fd3 1, 24372, 24372, 2708, 10832, 0xc4276bfd
0, 9, 9, 1, 161280, 0xa5827077 0, 9, 9, 1, 161280, 0xa5827077
1, 27090, 27090, 2709, 10836, 0x4454fdde 1, 27080, 27080, 2708, 10832, 0x51f0fa8c
0, 10, 10, 1, 161280, 0xfd0615ee 0, 10, 10, 1, 161280, 0xfd0615ee
1, 29799, 29799, 2709, 10836, 0x68aae686 1, 29788, 29788, 2708, 10832, 0xcebae622
0, 11, 11, 1, 161280, 0xc6fdc861 0, 11, 11, 1, 161280, 0xc6fdc861
1, 32508, 32508, 2709, 10836, 0x61f2df35 1, 32496, 32496, 2708, 10832, 0xe9f6dc1f
1, 35217, 35217, 2709, 10836, 0xe36883c6 1, 35204, 35204, 2708, 10832, 0xda087fee
0, 12, 12, 1, 161280, 0xaa007c7e 0, 12, 12, 1, 161280, 0xaa007c7e
1, 37926, 37926, 2709, 10836, 0xefa62217 1, 37912, 37912, 2708, 10832, 0x67a621bb
0, 13, 13, 1, 161280, 0xf15e3a96 0, 13, 13, 1, 161280, 0xf15e3a96
1, 40635, 40635, 2709, 10836, 0x63b92479 1, 40620, 40620, 2708, 10832, 0xd7be207f
0, 14, 14, 1, 161280, 0xce827ae1 0, 14, 14, 1, 161280, 0xce827ae1
1, 43344, 43344, 2709, 10836, 0xaf452579 1, 43328, 43328, 2708, 10832, 0x19d32507
0, 15, 15, 1, 161280, 0xf379fc13 0, 15, 15, 1, 161280, 0xf379fc13
1, 46053, 46053, 2709, 10836, 0xdbb10001 1, 46036, 46036, 2708, 10832, 0xe1a3fbfa
0, 16, 16, 1, 161280, 0x89686a0c 0, 16, 16, 1, 161280, 0x89686a0c
1, 48762, 48762, 2709, 10836, 0xafb7f7a7 1, 48744, 48744, 2708, 10832, 0xd10df779
0, 17, 17, 1, 161280, 0x7e8342bd 0, 17, 17, 1, 161280, 0x7e8342bd
1, 51471, 51471, 2709, 10836, 0xd4b1e591 1, 51452, 51452, 2708, 10832, 0x4428e1a7
0, 18, 18, 1, 161280, 0x640dab86 0, 18, 18, 1, 161280, 0x640dab86
1, 54180, 54180, 2709, 10836, 0x4d44b3bb 1, 54160, 54160, 2708, 10832, 0x7ea9b33d
0, 19, 19, 1, 161280, 0xc6a86456 0, 19, 19, 1, 161280, 0xc6a86456
1, 56889, 56889, 2709, 10836, 0xff2ea5b3 1, 56868, 56868, 2708, 10832, 0x6852a5a5
0, 20, 20, 1, 161280, 0xe360b538 0, 20, 20, 1, 161280, 0xe360b538
1, 59598, 59598, 2709, 10836, 0x214e88ad 1, 59576, 59576, 2708, 10832, 0xfeb78863
0, 21, 21, 1, 161280, 0xbcc21064 0, 21, 21, 1, 161280, 0xbcc21064
1, 62307, 62307, 2709, 10836, 0xde8bfc9a 1, 62284, 62284, 2708, 10832, 0xf157f928
0, 22, 22, 1, 161280, 0x95bc4e63 0, 22, 22, 1, 161280, 0x95bc4e63
1, 65016, 65016, 2709, 10836, 0xb3cc4b6a 1, 64992, 64992, 2708, 10832, 0x86414b3e
0, 23, 23, 1, 161280, 0x390fa1bd 0, 23, 23, 1, 161280, 0x390fa1bd
1, 67725, 67725, 2709, 10836, 0x670bce40 1, 67700, 67700, 2708, 10832, 0x2e28cdf6
1, 70434, 70434, 2709, 10836, 0xc17d31b2 1, 70408, 70408, 2708, 10832, 0x00212e44
0, 24, 24, 1, 161280, 0xa35b3bb9 0, 24, 24, 1, 161280, 0xa35b3bb9
1, 73143, 73143, 2709, 10836, 0x7bcb9392 1, 73116, 73116, 2708, 10832, 0x2d7f9378
0, 25, 25, 1, 161280, 0x730b0779 0, 25, 25, 1, 161280, 0x730b0779
1, 75852, 75852, 2709, 10836, 0x230e28c9 1, 75824, 75824, 2708, 10832, 0x84cb25d7
0, 26, 26, 1, 161280, 0xf3c3a3eb 0, 26, 26, 1, 161280, 0xf3c3a3eb
1, 78561, 78561, 2709, 10836, 0x42df4204 1, 78532, 78532, 2708, 10832, 0x3aca41fa
0, 27, 27, 1, 161280, 0x676ecbaa 0, 27, 27, 1, 161280, 0x676ecbaa
1, 81270, 81270, 2709, 10836, 0xfa9134b9 1, 81240, 81240, 2708, 10832, 0x27ad34b9
0, 28, 28, 1, 161280, 0x06c4a4e5 0, 28, 28, 1, 161280, 0x06c4a4e5
1, 83979, 83979, 2709, 10836, 0x418c1844 1, 83948, 83948, 2708, 10832, 0xe665144a
0, 29, 29, 1, 161280, 0x177d26d9 0, 29, 29, 1, 161280, 0x177d26d9
1, 86688, 86688, 2709, 10836, 0x93ba66b6 1, 86656, 86656, 2708, 10832, 0xf9546626
0, 30, 30, 1, 161280, 0xdaf69ebe 0, 30, 30, 1, 161280, 0xdaf69ebe
1, 89397, 89397, 2709, 10836, 0x264a4ffa 1, 89364, 89364, 2708, 10832, 0xe71c4f22
0, 31, 31, 1, 161280, 0xabadc296 0, 31, 31, 1, 161280, 0xabadc296
1, 92106, 92106, 2709, 10836, 0x82c78a8e 1, 92072, 92072, 2708, 10832, 0x5e61869c
0, 32, 32, 1, 161280, 0xec144665 0, 32, 32, 1, 161280, 0xec144665
1, 94815, 94815, 2709, 10836, 0x10d22fdc 1, 94780, 94780, 2708, 10832, 0x571d2c10
0, 33, 33, 1, 161280, 0x6785aa48 0, 33, 33, 1, 161280, 0x6785aa48
1, 97524, 97524, 2709, 10836, 0x2d25906b 1, 97488, 97488, 2708, 10832, 0xf0e08cd5
0, 34, 34, 1, 161280, 0x2a0cfcaf 0, 34, 34, 1, 161280, 0x2a0cfcaf
1, 100233, 100233, 2709, 10836, 0xa8a111fb 1, 100196, 100196, 2708, 10832, 0x66650e49
0, 35, 35, 1, 161280, 0x9288d513 0, 35, 35, 1, 161280, 0x9288d513
1, 102942, 102942, 2709, 10836, 0xbd95df87 1, 102904, 102904, 2708, 10832, 0x4024deaf
1, 105651, 105651, 2709, 10836, 0x500ddec0 1, 105612, 105612, 2708, 10832, 0xda7bdb14
0, 36, 36, 1, 161280, 0x1d295ad0 0, 36, 36, 1, 161280, 0x1d295ad0
1, 108360, 108360, 2709, 10836, 0x95d9350b 1, 108320, 108320, 2708, 10832, 0xc27a342f
0, 37, 37, 1, 161280, 0xb9fd8406 0, 37, 37, 1, 161280, 0xb9fd8406
1, 111069, 111069, 2709, 10836, 0xfa54ea1f 1, 111028, 111028, 2708, 10832, 0x574fe679
0, 38, 38, 1, 161280, 0x98bced49 0, 38, 38, 1, 161280, 0x98bced49
1, 113778, 113778, 2709, 10836, 0x51b2467e 1, 113736, 113736, 2708, 10832, 0x37db464e
0, 39, 39, 1, 161280, 0x42e6fbae 0, 39, 39, 1, 161280, 0x42e6fbae
1, 116487, 116487, 2709, 10836, 0x5d772af9 1, 116444, 116444, 2708, 10832, 0xb1fa2a83
0, 40, 40, 1, 161280, 0xfd218209 0, 40, 40, 1, 161280, 0xfd218209
1, 119196, 119196, 2709, 10836, 0xae25dd8d 1, 119152, 119152, 2708, 10832, 0x3d98d9b7
0, 41, 41, 1, 161280, 0x21c2ef31 0, 41, 41, 1, 161280, 0x21c2ef31
1, 121905, 121905, 2709, 10836, 0xe4bd0cb0 1, 121860, 121860, 2708, 10832, 0xb7c908e2
0, 42, 42, 1, 161280, 0xce4be932 0, 42, 42, 1, 161280, 0xce4be932
1, 124614, 124614, 2709, 10836, 0xb33544f0 1, 124568, 124568, 2708, 10832, 0x9f7e44d8
0, 43, 43, 1, 161280, 0xd5c0d5fc 0, 43, 43, 1, 161280, 0xd5c0d5fc
1, 127323, 127323, 2709, 10836, 0xd5658b12 1, 127276, 127276, 2708, 10832, 0xae9b8774
0, 44, 44, 1, 161280, 0xf8d13076 0, 44, 44, 1, 161280, 0xf8d13076
1, 130032, 130032, 2709, 10836, 0xeff66e5d 1, 129984, 129984, 2708, 10832, 0x36916e3f
0, 45, 45, 1, 161280, 0xdbf86007 0, 45, 45, 1, 161280, 0xdbf86007
1, 132741, 132741, 2709, 10836, 0xb1fff6c5 1, 132692, 132692, 2708, 10832, 0xd785f5ef
0, 46, 46, 1, 161280, 0x9475a651 0, 46, 46, 1, 161280, 0x9475a651
1, 135450, 135450, 2709, 10836, 0x84db56b5 1, 135400, 135400, 2708, 10832, 0x2a3a5673
1, 138159, 138159, 2709, 10836, 0x0230e3c9 1, 138108, 138108, 2708, 10832, 0x7320e379
0, 47, 47, 1, 161280, 0x41bf1542 0, 47, 47, 1, 161280, 0x41bf1542
1, 140868, 140868, 2709, 10836, 0xe58a7faf 1, 140816, 140816, 2708, 10832, 0xec787be5
0, 48, 48, 1, 161280, 0x6945297f 0, 48, 48, 1, 161280, 0x6945297f
1, 143577, 143577, 2709, 10836, 0xc4003e2a 1, 143524, 143524, 2708, 10832, 0xd0d13aa0
0, 49, 49, 1, 161280, 0x2282025e 0, 49, 49, 1, 161280, 0x2282025e
1, 146286, 146286, 2709, 10836, 0x6360cbbf 1, 146232, 146232, 2708, 10832, 0x34dfcb17
0, 50, 50, 1, 161280, 0x55aace0c 0, 50, 50, 1, 161280, 0x55aace0c
1, 148995, 148995, 2709, 10836, 0xc29c2a05 1, 148940, 148940, 2708, 10832, 0x1a9c29f1
0, 51, 51, 1, 161280, 0xc78aa51c 0, 51, 51, 1, 161280, 0xc78aa51c
1, 151704, 151704, 2709, 10836, 0xb294dd11 1, 151648, 151648, 2708, 10832, 0x3e73dcc1
0, 52, 52, 1, 161280, 0xb4b84e6c 0, 52, 52, 1, 161280, 0xb4b84e6c
1, 154413, 154413, 2709, 10836, 0x4388b43b 1, 154356, 154356, 2708, 10832, 0x7855b053
0, 53, 53, 1, 161280, 0x3bbb3e44 0, 53, 53, 1, 161280, 0x3bbb3e44
1, 157122, 157122, 2709, 10836, 0xdd7be367 1, 157064, 157064, 2708, 10832, 0x5588df8f
0, 54, 54, 1, 161280, 0x4dd89d80 0, 54, 54, 1, 161280, 0x4dd89d80
1, 159831, 159831, 2709, 10836, 0xb9f612a9 1, 159772, 159772, 2708, 10832, 0x6f621299
0, 55, 55, 1, 161280, 0xa446a5c5 0, 55, 55, 1, 161280, 0xa446a5c5
1, 162540, 162540, 2709, 10836, 0xb64a39fe 1, 162480, 162480, 2708, 10832, 0xce7f39c2
0, 56, 56, 1, 161280, 0x8f56b1d6 0, 56, 56, 1, 161280, 0x8f56b1d6
1, 165249, 165249, 2709, 10836, 0x6eba6594 1, 165188, 165188, 2708, 10832, 0xd88e6552
0, 57, 57, 1, 161280, 0xa170df87 0, 57, 57, 1, 161280, 0xa170df87
1, 167958, 167958, 2709, 10836, 0xb4af35c1 1, 167896, 167896, 2708, 10832, 0xddc63597
0, 58, 58, 1, 161280, 0x4740a4df 0, 58, 58, 1, 161280, 0x4740a4df
1, 170667, 170667, 2709, 10836, 0x4e581c49 1, 170604, 170604, 2708, 10832, 0xe3071865
1, 173376, 173376, 2709, 10836, 0xb062a19f 1, 173312, 173312, 2708, 10832, 0x2a44a123
0, 59, 59, 1, 161280, 0x86608ee7 0, 59, 59, 1, 161280, 0x86608ee7
1, 176085, 176085, 2709, 10836, 0x87cd6135 1, 176020, 176020, 2708, 10832, 0x08d85d45
0, 60, 60, 1, 161280, 0x629b4543 0, 60, 60, 1, 161280, 0x629b4543
1, 178794, 178794, 2709, 10836, 0x37bffbd6 1, 178728, 178728, 2708, 10832, 0x4dc5f83a
0, 61, 61, 1, 161280, 0x697fb952 0, 61, 61, 1, 161280, 0x697fb952
1, 181503, 181503, 2709, 10836, 0x6c797900 1, 181436, 181436, 2708, 10832, 0x89497812
0, 62, 62, 1, 161280, 0x98e84a51 0, 62, 62, 1, 161280, 0x98e84a51
1, 184212, 184212, 2709, 10836, 0x1615df36 1, 184144, 184144, 2708, 10832, 0x9ee1db54
0, 63, 63, 1, 161280, 0x97949a90 0, 63, 63, 1, 161280, 0x97949a90
1, 186921, 186921, 2709, 10836, 0xb472d9e9 1, 186852, 186852, 2708, 10832, 0x5277d611
0, 64, 64, 1, 161280, 0x6a8c9b96 0, 64, 64, 1, 161280, 0x6a8c9b96
1, 189630, 189630, 2709, 10836, 0xdfff626e 1, 189560, 189560, 2708, 10832, 0x570a619c
0, 65, 65, 1, 161280, 0xafa714ab 0, 65, 65, 1, 161280, 0xafa714ab
1, 192339, 192339, 2709, 10836, 0xffa6d771 1, 192268, 192268, 2708, 10832, 0xa217d70f
0, 66, 66, 1, 161280, 0x0cf39314 0, 66, 66, 1, 161280, 0x0cf39314
1, 195048, 195048, 2709, 10836, 0xa7f3cf96 1, 194976, 194976, 2708, 10832, 0x6f0ecbf4
0, 67, 67, 1, 161280, 0x9ccc8171 0, 67, 67, 1, 161280, 0x9ccc8171
1, 197757, 197757, 2709, 10836, 0xf556b50a 1, 197684, 197684, 2708, 10832, 0x2704b114
0, 68, 68, 1, 161280, 0x8232d5a8 0, 68, 68, 1, 161280, 0x8232d5a8
1, 200466, 200466, 2709, 10836, 0x99b86b39 1, 200392, 200392, 2708, 10832, 0xf24e679f
0, 69, 69, 1, 161280, 0x250dd5cb 0, 69, 69, 1, 161280, 0x250dd5cb
1, 203175, 203175, 2709, 10836, 0x886920d3 1, 203100, 203100, 2708, 10832, 0x05572099
0, 70, 70, 1, 161280, 0xf764e43a 0, 70, 70, 1, 161280, 0xf764e43a
1, 205884, 205884, 2709, 10836, 0xefb0305a 1, 205808, 205808, 2708, 10832, 0x33942d0c
1, 208593, 208593, 2709, 10836, 0x4ab7aa32 1, 208516, 208516, 2708, 10832, 0xa77ea674
0, 71, 71, 1, 161280, 0x2f4bec00 0, 71, 71, 1, 161280, 0x2f4bec00
1, 211302, 211302, 2709, 10836, 0x7f106530 1, 211224, 211224, 2708, 10832, 0xeba663bc
0, 72, 72, 1, 161280, 0x76f1598b 0, 72, 72, 1, 161280, 0x76f1598b
1, 214011, 214011, 2709, 10836, 0x6461559a 1, 213932, 213932, 2708, 10832, 0x1338524a
0, 73, 73, 1, 161280, 0xa91b84da 0, 73, 73, 1, 161280, 0xa91b84da
1, 216720, 216720, 2709, 10836, 0x25e3b12b 1, 216640, 216640, 2708, 10832, 0x6182b0b3
0, 74, 74, 1, 161280, 0x011a77fb 0, 74, 74, 1, 161280, 0x011a77fb
1, 219429, 219429, 2709, 10836, 0x32cfa3ba 1, 219348, 219348, 2708, 10832, 0xa410a364
0, 75, 75, 1, 161280, 0xdbf5341c 0, 75, 75, 1, 161280, 0xdbf5341c
1, 222138, 222138, 2709, 10836, 0x0bff78a4 1, 222056, 222056, 2708, 10832, 0x2f4374b0
0, 76, 76, 1, 161280, 0x40d5abfa 0, 76, 76, 1, 161280, 0x40d5abfa
1, 224847, 224847, 2709, 10836, 0xe4323d53 1, 224764, 224764, 2708, 10832, 0xf41f3a07
0, 77, 77, 1, 161280, 0x9fb8360c 0, 77, 77, 1, 161280, 0x9fb8360c
1, 227556, 227556, 2709, 10836, 0x70b35196 1, 227472, 227472, 2708, 10832, 0x2b1c50c6
0, 78, 78, 1, 161280, 0xabc5fba8 0, 78, 78, 1, 161280, 0xabc5fba8
1, 230265, 230265, 2709, 10836, 0xf2b8b07f 1, 230180, 230180, 2708, 10832, 0x3692ac89
0, 79, 79, 1, 161280, 0x98090909 0, 79, 79, 1, 161280, 0x98090909
1, 232974, 232974, 2709, 10836, 0x826cc972 1, 232888, 232888, 2708, 10832, 0x5d6bc87e
0, 80, 80, 1, 161280, 0x9a3613bd 0, 80, 80, 1, 161280, 0x9a3613bd
1, 235683, 235683, 2709, 10836, 0x8a0fdce8 1, 235596, 235596, 2708, 10832, 0x1b1cda0c
0, 81, 81, 1, 161280, 0x9071024f 0, 81, 81, 1, 161280, 0x9071024f
1, 238392, 238392, 2709, 10836, 0xa072a503 1, 238304, 238304, 2708, 10832, 0x11eaa15f
1, 241012, 241012, 2708, 10832, 0x73c7d7ef
0, 82, 82, 1, 161280, 0x4df39487 0, 82, 82, 1, 161280, 0x4df39487
1, 241101, 241101, 2709, 10836, 0xd698d8e7 1, 243720, 243720, 2708, 10832, 0x65d7e3be
1, 243810, 243810, 2709, 10836, 0xfe80e794
0, 83, 83, 1, 161280, 0x17658524 0, 83, 83, 1, 161280, 0x17658524
1, 246519, 246519, 2709, 10836, 0xdd580a5a 1, 246428, 246428, 2708, 10832, 0xb9c00688
0, 84, 84, 1, 161280, 0xbcd794df 0, 84, 84, 1, 161280, 0xbcd794df
1, 249228, 249228, 2709, 10836, 0x121bc1bb 1, 249136, 249136, 2708, 10832, 0x0b98c125
0, 85, 85, 1, 161280, 0x2a14ae05 0, 85, 85, 1, 161280, 0x2a14ae05
1, 251937, 251937, 2709, 10836, 0x8cebd7d9 1, 251844, 251844, 2708, 10832, 0x331ed413
0, 86, 86, 1, 161280, 0x664feab2 0, 86, 86, 1, 161280, 0x664feab2
1, 254646, 254646, 2709, 10836, 0x6eaef4d7 1, 254552, 254552, 2708, 10832, 0x9b68f485
0, 87, 87, 1, 161280, 0xf6b721f4 0, 87, 87, 1, 161280, 0xf6b721f4
1, 257355, 257355, 2709, 10836, 0x8f0b5d0b 1, 257260, 257260, 2708, 10832, 0x1b865c55
0, 88, 88, 1, 161280, 0xfec565f3 0, 88, 88, 1, 161280, 0xfec565f3
1, 260064, 260064, 2709, 10836, 0x40ccf61f 1, 259968, 259968, 2708, 10832, 0x68cef565
0, 89, 89, 1, 161280, 0xd39aabee 0, 89, 89, 1, 161280, 0xd39aabee
1, 262773, 262773, 2709, 10836, 0xb6db5f1d 1, 262676, 262676, 2708, 10832, 0x3a605f15
0, 90, 90, 1, 161280, 0x1f3d5de7 0, 90, 90, 1, 161280, 0x1f3d5de7
1, 265482, 265482, 2709, 10836, 0xa089f250 1, 265384, 265384, 2708, 10832, 0xd72ff22e
0, 91, 91, 1, 161280, 0xaf97f50c 0, 91, 91, 1, 161280, 0xaf97f50c
1, 268191, 268191, 2709, 10836, 0xd3512f2b 1, 268092, 268092, 2708, 10832, 0x1c672b67
0, 92, 92, 1, 161280, 0xe34b6b6a 0, 92, 92, 1, 161280, 0xe34b6b6a
1, 270900, 270900, 2709, 10836, 0xfa127f74 1, 270800, 270800, 2708, 10832, 0xfd1a7e7e
0, 93, 93, 1, 161280, 0x4117371e 0, 93, 93, 1, 161280, 0x4117371e
1, 273609, 273609, 2709, 10836, 0xd6a60ead 1, 273508, 273508, 2708, 10832, 0x9bf20ead
1, 276318, 276318, 2709, 10836, 0x00000000 1, 276216, 276216, 2708, 10832, 0x00000000
0, 94, 94, 1, 161280, 0x4117371e 0, 94, 94, 1, 161280, 0x4117371e
1, 279027, 279027, 2709, 10836, 0x00000000 1, 278924, 278924, 2708, 10832, 0x00000000
0, 95, 95, 1, 161280, 0xe555b55e 0, 95, 95, 1, 161280, 0xe555b55e
1, 281736, 281736, 2709, 10836, 0x00000000 1, 281632, 281632, 2708, 10832, 0x00000000
0, 96, 96, 1, 161280, 0xe555b55e 0, 96, 96, 1, 161280, 0xe555b55e
1, 284445, 284445, 2709, 10836, 0x00000000 1, 284340, 284340, 2708, 10832, 0x00000000
0, 97, 97, 1, 161280, 0xe555b55e 0, 97, 97, 1, 161280, 0xe555b55e
1, 287154, 287154, 2709, 10836, 0x00000000 1, 287048, 287048, 2708, 10832, 0x00000000
0, 98, 98, 1, 161280, 0xe555b55e 0, 98, 98, 1, 161280, 0xe555b55e
1, 289863, 289863, 2709, 10836, 0x00000000 1, 289756, 289756, 2708, 10832, 0x00000000
0, 99, 99, 1, 161280, 0xe555b55e 0, 99, 99, 1, 161280, 0xe555b55e
1, 292572, 292572, 2709, 10836, 0x00000000 1, 292464, 292464, 2708, 10832, 0x00000000
0, 100, 100, 1, 161280, 0xe555b55e 0, 100, 100, 1, 161280, 0xe555b55e
1, 295281, 295281, 2709, 10836, 0x00000000 1, 295172, 295172, 2708, 10832, 0x00000000
0, 101, 101, 1, 161280, 0xe555b55e 0, 101, 101, 1, 161280, 0xe555b55e
1, 297990, 297990, 2709, 10836, 0x00000000 1, 297880, 297880, 2708, 10832, 0x00000000
0, 102, 102, 1, 161280, 0xe555b55e 0, 102, 102, 1, 161280, 0xe555b55e
1, 300699, 300699, 2709, 10836, 0x00000000 1, 300588, 300588, 2708, 10832, 0x00000000
0, 103, 103, 1, 161280, 0xe555b55e 0, 103, 103, 1, 161280, 0xe555b55e
1, 303408, 303408, 2709, 10836, 0x00000000 1, 303296, 303296, 2708, 10832, 0x00000000
0, 104, 104, 1, 161280, 0xe555b55e 0, 104, 104, 1, 161280, 0xe555b55e

View File

@ -1,46 +1,46 @@
#tb 0: 1/15 #tb 0: 1/15
#tb 1: 1/44100 #tb 1: 1/44100
0, 0, 0, 1, 69120, 0x68beb30f 0, 0, 0, 1, 69120, 0x68beb30f
1, 0, 0, 2709, 10836, 0xedecb6a7 1, 0, 0, 2708, 10832, 0x1597b4c8
1, 2709, 2709, 2709, 10836, 0x8098a323 1, 2708, 2708, 2708, 10832, 0xf9479f8b
0, 1, 1, 1, 69120, 0x3976f5cf 0, 1, 1, 1, 69120, 0x3976f5cf
1, 5418, 5418, 2709, 10836, 0xcfa1112e 1, 5416, 5416, 2708, 10832, 0x8db50e74
0, 2, 2, 1, 69120, 0xf815bc3c 0, 2, 2, 1, 69120, 0xf815bc3c
1, 8127, 8127, 2709, 10836, 0xe241ede4 1, 8124, 8124, 2708, 10832, 0x2b33ecbb
0, 3, 3, 1, 69120, 0xa7cc0ae6 0, 3, 3, 1, 69120, 0xa7cc0ae6
1, 10836, 10836, 2709, 10836, 0xddf254bb 1, 10832, 10832, 2708, 10832, 0x8d0f537b
0, 4, 4, 1, 69120, 0xd85ac282 0, 4, 4, 1, 69120, 0xd85ac282
1, 13545, 13545, 2709, 10836, 0xa16c8507 1, 13540, 13540, 2708, 10832, 0x922081c7
0, 5, 5, 1, 69120, 0xf7fd7edb 0, 5, 5, 1, 69120, 0xf7fd7edb
1, 16254, 16254, 2709, 10836, 0xbe211f93 1, 16248, 16248, 2708, 10832, 0x40291f19
0, 6, 6, 1, 69120, 0x433bb6f6 0, 6, 6, 1, 69120, 0x433bb6f6
1, 18963, 18963, 2709, 10836, 0x26c7283d 1, 18956, 18956, 2708, 10832, 0x88f5271a
0, 7, 7, 1, 69120, 0xdbac8bee 0, 7, 7, 1, 69120, 0xdbac8bee
1, 21672, 21672, 2709, 10836, 0x4d18be56 1, 21664, 21664, 2708, 10832, 0x55c6bbe5
0, 8, 8, 1, 69120, 0x88e2a799 0, 8, 8, 1, 69120, 0x88e2a799
1, 24381, 24381, 2709, 10836, 0x57b9af6f 1, 24372, 24372, 2708, 10832, 0x9b51ae82
0, 9, 9, 1, 69120, 0x49617b26 0, 9, 9, 1, 69120, 0x49617b26
1, 27090, 27090, 2709, 10836, 0xd5864280 1, 27080, 27080, 2708, 10832, 0xcdf2409b
0, 10, 10, 1, 69120, 0xeb44ca01 0, 10, 10, 1, 69120, 0xeb44ca01
1, 29799, 29799, 2709, 10836, 0xd582b451 1, 29788, 29788, 2708, 10832, 0x0933b1a4
0, 11, 11, 1, 69120, 0x6fea37e8 0, 11, 11, 1, 69120, 0x6fea37e8
1, 32508, 32508, 2709, 10836, 0xec13731d 1, 32496, 32496, 2708, 10832, 0x24b77006
1, 35217, 35217, 2709, 10836, 0xe3d4fbb8 1, 35204, 35204, 2708, 10832, 0xf612fa8a
0, 12, 12, 1, 69120, 0xf55d74c7 0, 12, 12, 1, 69120, 0xf55d74c7
1, 37926, 37926, 2709, 10836, 0xcbb54d18 1, 37912, 37912, 2708, 10832, 0x99884b06
0, 13, 13, 1, 69120, 0xb5082ca7 0, 13, 13, 1, 69120, 0xb5082ca7
1, 40635, 40635, 2709, 10836, 0xff7e7133 1, 40620, 40620, 2708, 10832, 0x3c746fbe
0, 14, 14, 1, 69120, 0x5876d758 0, 14, 14, 1, 69120, 0x5876d758
1, 43344, 43344, 2709, 10836, 0xcc28b1a7 1, 43328, 43328, 2708, 10832, 0x05f3b08a
0, 15, 15, 1, 69120, 0x45e7dd5c 0, 15, 15, 1, 69120, 0x45e7dd5c
1, 46053, 46053, 2709, 10836, 0xbf9e07a5 1, 46036, 46036, 2708, 10832, 0xa6560483
1, 48762, 48762, 2709, 10836, 0x16408f38 1, 48744, 48744, 2708, 10832, 0xd98a8e19
1, 51471, 51471, 2709, 10836, 0x2b000c9f 1, 51452, 51452, 2708, 10832, 0xf98a0b2e
1, 54180, 54180, 2709, 10836, 0x0ccd9811 1, 54160, 54160, 2708, 10832, 0xb1039582
1, 56889, 56889, 2709, 10836, 0xf9575d48 1, 56868, 56868, 2708, 10832, 0x85dd5c3f
1, 59598, 59598, 2709, 10836, 0x1ee68190 1, 59576, 59576, 2708, 10832, 0x19fc801a
1, 62307, 62307, 2709, 10836, 0xde435373 1, 62284, 62284, 2708, 10832, 0x95805089
1, 65016, 65016, 2709, 10836, 0xd83be17a 1, 64992, 64992, 2708, 10832, 0x576fdec3
1, 67725, 67725, 2709, 10836, 0x9a7f0bbe 1, 67700, 67700, 2708, 10832, 0x704a0905
1, 70434, 70434, 2709, 10836, 0x8709e4d3 1, 70408, 70408, 2708, 10832, 0xf87ce1fa
1, 73143, 73143, 2709, 10836, 0xde1879cb 1, 73116, 73116, 2708, 10832, 0xfc0076b9