Browse Source

Merge remote-tracking branch 'qatar/master'

* qatar/master:
  FATE: add tests for dfa
  mpegaudiodec: fix seeking.
  mpegaudiodec: fix compilation when testing the unchecked bitstream reader
  threads: add sysconf based number of CPUs detection
  threads: always include necessary headers for number of CPUs detection
  threads: default to automatic thread count detection
  Changelog: restore version <next> header
  cook: K&R formatting cosmetics

Conflicts:
	Changelog
	libavcodec/version.h

Merged-by: Michael Niedermayer <michaelni@gmx.at>
tags/n0.10
Michael Niedermayer 14 years ago
parent
commit
4478e9d8db
21 changed files with 618 additions and 393 deletions
  1. +3
    -3
      Changelog
  2. +2
    -0
      configure
  3. +366
    -364
      libavcodec/cook.c
  4. +19
    -17
      libavcodec/mpegaudiodec.c
  5. +1
    -1
      libavcodec/options.c
  6. +11
    -2
      libavcodec/pthread.c
  7. +1
    -1
      libavcodec/version.h
  8. +16
    -5
      libavformat/utils.c
  9. +1
    -0
      tests/Makefile
  10. +35
    -0
      tests/fate/dfa.mak
  11. +25
    -0
      tests/ref/fate/dfa1
  12. +8
    -0
      tests/ref/fate/dfa10
  13. +9
    -0
      tests/ref/fate/dfa11
  14. +17
    -0
      tests/ref/fate/dfa2
  15. +10
    -0
      tests/ref/fate/dfa3
  16. +13
    -0
      tests/ref/fate/dfa4
  17. +15
    -0
      tests/ref/fate/dfa5
  18. +12
    -0
      tests/ref/fate/dfa6
  19. +12
    -0
      tests/ref/fate/dfa7
  20. +36
    -0
      tests/ref/fate/dfa8
  21. +6
    -0
      tests/ref/fate/dfa9

+ 3
- 3
Changelog View File

@@ -6,7 +6,6 @@ version next:
- v410 Quicktime Uncompressed 4:4:4 10-bit encoder and decoder
- SBaGen (SBG) binaural beats script demuxer
- OpenMG Audio muxer
- SMJPEG demuxer
- dv: add timecode to metadata
- thumbnail video filter
- XML output in ffprobe
@@ -14,6 +13,9 @@ version next:
- tinterlace video filter
- astreamsync audio filter
- amerge audio filter
- Indeo 4 decoder
- SMJPEG demuxer
- Automatic thread count based on detection number of (available) CPU cores


version 0.9:
@@ -150,8 +152,6 @@ easier to use. The changes are:
- Dxtory capture format decoder
- cellauto source
- Simple segmenting muxer
- Indeo 4 decoder
- SMJPEG demuxer


version 0.8:


+ 2
- 0
configure View File

@@ -1229,6 +1229,7 @@ HAVE_LIST="
symver
symver_asm_label
symver_gnu_asm
sysconf
sysctl
sys_mman_h
sys_param_h
@@ -3008,6 +3009,7 @@ check_func setrlimit
check_func strerror_r
check_func strptime
check_func sched_getaffinity
check_func sysconf
check_func sysctl
check_func_headers conio.h kbhit
check_func_headers windows.h PeekNamedPipe


+ 366
- 364
libavcodec/cook.c
File diff suppressed because it is too large
View File


+ 19
- 17
libavcodec/mpegaudiodec.c View File

@@ -1436,28 +1436,30 @@ static int mp_decode_layer3(MPADecodeContext *s)
memcpy(s->last_buf + s->last_buf_size, ptr, EXTRABYTES);
s->in_gb = s->gb;
init_get_bits(&s->gb, s->last_buf, s->last_buf_size*8);
#if CONFIG_SAFE_BITSTREAM_READER
#if !UNCHECKED_BITSTREAM_READER
s->gb.size_in_bits_plus8 += EXTRABYTES * 8;
#endif
skip_bits_long(&s->gb, 8*(s->last_buf_size - main_data_begin));
}

for (gr = 0; gr < nb_granules; gr++) {
for (ch = 0; ch < s->nb_channels; ch++) {
g = &s->granules[ch][gr];
if (get_bits_count(&s->gb) < 0) {
av_log(s->avctx, AV_LOG_DEBUG, "mdb:%d, lastbuf:%d skipping granule %d\n",
main_data_begin, s->last_buf_size, gr);
skip_bits_long(&s->gb, g->part2_3_length);
s->last_buf_size <<= 3;
for (gr = 0, ch = 0; gr < nb_granules && (s->last_buf_size >> 3) < main_data_begin; gr++, ch = 0) {
for (; ch < s->nb_channels && (s->last_buf_size >> 3) < main_data_begin; ch++) {
g = &s->granules[ch][gr];
s->last_buf_size += g->part2_3_length;
memset(g->sb_hybrid, 0, sizeof(g->sb_hybrid));
if (get_bits_count(&s->gb) >= s->gb.size_in_bits && s->in_gb.buffer) {
skip_bits_long(&s->in_gb, get_bits_count(&s->gb) - s->gb.size_in_bits);
s->gb = s->in_gb;
s->in_gb.buffer = NULL;
}
continue;
}
}
skip_bits_long(&s->gb, s->last_buf_size - 8 * main_data_begin);
if (get_bits_count(&s->gb) >= s->gb.size_in_bits && s->in_gb.buffer) {
skip_bits_long(&s->in_gb, get_bits_count(&s->gb) - s->gb.size_in_bits);
s->gb = s->in_gb;
s->in_gb.buffer = NULL;
}
} else {
gr = ch = 0;
}

for (; gr < nb_granules; gr++, ch = 0) {
for (; ch < s->nb_channels; ch++) {
g = &s->granules[ch][gr];
bits_pos = get_bits_count(&s->gb);

if (!s->lsf) {


+ 1
- 1
libavcodec/options.c View File

@@ -371,7 +371,7 @@ static const AVOption options[]={
{"float", NULL, 0, AV_OPT_TYPE_CONST, {.dbl = FF_AA_FLOAT }, INT_MIN, INT_MAX, V|D, "aa"},
#endif
{"qns", "quantizer noise shaping", OFFSET(quantizer_noise_shaping), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX, V|E},
{"threads", NULL, OFFSET(thread_count), AV_OPT_TYPE_INT, {.dbl = 1 }, 0, INT_MAX, V|E|D, "threads"},
{"threads", NULL, OFFSET(thread_count), AV_OPT_TYPE_INT, {.dbl = 0 }, 0, INT_MAX, V|E|D, "threads"},
{"auto", "detect a good number of threads", 0, AV_OPT_TYPE_CONST, {.dbl = 0 }, INT_MIN, INT_MAX, V|E|D, "threads"},
{"me_threshold", "motion estimaton threshold", OFFSET(me_threshold), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX, V|E},
{"mb_threshold", "macroblock threshold", OFFSET(mb_threshold), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX, V|E},


+ 11
- 2
libavcodec/pthread.c View File

@@ -34,9 +34,11 @@
#if HAVE_SCHED_GETAFFINITY
#define _GNU_SOURCE
#include <sched.h>
#elif HAVE_GETSYSTEMINFO
#endif
#if HAVE_GETSYSTEMINFO
#include <windows.h>
#elif HAVE_SYSCTL
#endif
#if HAVE_SYSCTL
#if HAVE_SYS_PARAM_H
#include <sys/param.h>
#endif
@@ -44,6 +46,9 @@
#include <sys/param.h>
#include <sys/sysctl.h>
#endif
#if HAVE_SYSCONF
#include <unistd.h>
#endif

#include "avcodec.h"
#include "internal.h"
@@ -178,6 +183,10 @@ static int get_logical_cpus(AVCodecContext *avctx)
ret = sysctl(mib, 2, &nb_cpus, &len, NULL, 0);
if (ret == -1)
nb_cpus = 0;
#elif HAVE_SYSCONF && defined(_SC_NPROC_ONLN)
nb_cpus = sysconf(_SC_NPROC_ONLN);
#elif HAVE_SYSCONF && defined(_SC_NPROCESSORS_ONLN)
nb_cpus = sysconf(_SC_NPROCESSORS_ONLN);
#endif
av_log(avctx, AV_LOG_DEBUG, "detected %d logical cores\n", nb_cpus);
return FFMIN(nb_cpus, MAX_AUTO_THREADS);


+ 1
- 1
libavcodec/version.h View File

@@ -22,7 +22,7 @@

#define LIBAVCODEC_VERSION_MAJOR 53
#define LIBAVCODEC_VERSION_MINOR 49
#define LIBAVCODEC_VERSION_MICRO 100
#define LIBAVCODEC_VERSION_MICRO 101

#define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \
LIBAVCODEC_VERSION_MINOR, \


+ 16
- 5
libavformat/utils.c View File

@@ -2377,9 +2377,14 @@ int avformat_find_stream_info(AVFormatContext *ic, AVDictionary **options)
int i, count, ret, read_size, j;
AVStream *st;
AVPacket pkt1, *pkt;
AVDictionary *one_thread_opt = NULL;
int64_t old_offset = avio_tell(ic->pb);
int orig_nb_streams = ic->nb_streams; // new streams might appear, no options for those

/* this function doesn't flush the decoders, so force thread count
* to 1 to fix behavior when thread count > number of frames in the file */
av_dict_set(&one_thread_opt, "threads", "1", 0);

for(i=0;i<ic->nb_streams;i++) {
AVCodec *codec;
st = ic->streams[i];
@@ -2404,17 +2409,18 @@ int avformat_find_stream_info(AVFormatContext *ic, AVDictionary **options)
/* this function doesn't flush the decoders, so force thread count
* to 1 to fix behavior when thread count > number of frames in the file */
if (options)
av_dict_set(&options[i], "threads", 0, 0);
av_dict_set(&options[i], "threads", "1", 0);

/* Ensure that subtitle_header is properly set. */
if (st->codec->codec_type == AVMEDIA_TYPE_SUBTITLE
&& codec && !st->codec->codec)
avcodec_open2(st->codec, codec, options ? &options[i] : NULL);
avcodec_open2(st->codec, codec, options ? &options[i] : &one_thread_opt);

//try to just open decoders, in case this is enough to get parameters
if(!has_codec_parameters(st->codec)){
if (codec && !st->codec->codec)
avcodec_open2(st->codec, codec, options ? &options[i] : NULL);
avcodec_open2(st->codec, codec, options ? &options[i]
: &one_thread_opt);
}
}

@@ -2556,7 +2562,8 @@ int avformat_find_stream_info(AVFormatContext *ic, AVDictionary **options)
least one frame of codec data, this makes sure the codec initializes
the channel configuration and does not only trust the values from the container.
*/
try_decode_frame(st, pkt, (options && i < orig_nb_streams )? &options[i] : NULL);
try_decode_frame(st, pkt, (options && i < orig_nb_streams )? &options[i]
: &one_thread_opt);

st->codec_info_nb_frames++;
count++;
@@ -2677,8 +2684,12 @@ int avformat_find_stream_info(AVFormatContext *ic, AVDictionary **options)
#endif

find_stream_info_err:
for (i=0; i < ic->nb_streams; i++)
for (i=0; i < ic->nb_streams; i++) {
if (ic->streams[i]->codec)
ic->streams[i]->codec->thread_count = 0;
av_freep(&ic->streams[i]->info);
}
av_dict_free(&one_thread_opt);
return ret;
}



+ 1
- 0
tests/Makefile View File

@@ -49,6 +49,7 @@ include $(SRC_PATH)/tests/fate/atrac.mak
include $(SRC_PATH)/tests/fate/audio.mak
include $(SRC_PATH)/tests/fate/dct.mak
include $(SRC_PATH)/tests/fate/demux.mak
include $(SRC_PATH)/tests/fate/dfa.mak
include $(SRC_PATH)/tests/fate/dpcm.mak
include $(SRC_PATH)/tests/fate/ea.mak
include $(SRC_PATH)/tests/fate/fft.mak


+ 35
- 0
tests/fate/dfa.mak View File

@@ -0,0 +1,35 @@
FATE_DFA += fate-dfa1
fate-dfa1: CMD = framecrc -i $(SAMPLES)/chronomaster-dfa/0000.dfa

FATE_DFA += fate-dfa2
fate-dfa2: CMD = framecrc -i $(SAMPLES)/chronomaster-dfa/0001.dfa

FATE_DFA += fate-dfa3
fate-dfa3: CMD = framecrc -i $(SAMPLES)/chronomaster-dfa/0002.dfa

FATE_DFA += fate-dfa4
fate-dfa4: CMD = framecrc -i $(SAMPLES)/chronomaster-dfa/0003.dfa

FATE_DFA += fate-dfa5
fate-dfa5: CMD = framecrc -i $(SAMPLES)/chronomaster-dfa/0004.dfa

FATE_DFA += fate-dfa6
fate-dfa6: CMD = framecrc -i $(SAMPLES)/chronomaster-dfa/0005.dfa

FATE_DFA += fate-dfa7
fate-dfa7: CMD = framecrc -i $(SAMPLES)/chronomaster-dfa/0006.dfa

FATE_DFA += fate-dfa8
fate-dfa8: CMD = framecrc -i $(SAMPLES)/chronomaster-dfa/0007.dfa

FATE_DFA += fate-dfa9
fate-dfa9: CMD = framecrc -i $(SAMPLES)/chronomaster-dfa/0008.dfa

FATE_DFA += fate-dfa10
fate-dfa10: CMD = framecrc -i $(SAMPLES)/chronomaster-dfa/0009.dfa

FATE_DFA += fate-dfa11
fate-dfa11: CMD = framecrc -i $(SAMPLES)/chronomaster-dfa/0010.dfa

FATE_TESTS += $(FATE_DFA)
fate-dfa: $(FATE_DFA)

+ 25
- 0
tests/ref/fate/dfa1 View File

@@ -0,0 +1,25 @@
0, 0, 308224, 0x7264439e
0, 11520, 308224, 0xe1734f4b
0, 23040, 308224, 0x9cfe28a4
0, 34560, 308224, 0xebb6ec8b
0, 46080, 308224, 0xaef16ca7
0, 57600, 308224, 0x0390b439
0, 69120, 308224, 0xe69bd008
0, 80640, 308224, 0xa1818468
0, 92160, 308224, 0x9d6e7d82
0, 103680, 308224, 0x54971a9e
0, 115200, 308224, 0xe14e15a8
0, 126720, 308224, 0xa026cf3f
0, 138240, 308224, 0xf8921be4
0, 149760, 308224, 0xf49a42cc
0, 161280, 308224, 0xa4108f17
0, 172800, 308224, 0xfa79cbfe
0, 184320, 308224, 0x3431f47b
0, 195840, 308224, 0x72aa3426
0, 207360, 308224, 0x81159f85
0, 218880, 308224, 0x04bcb289
0, 230400, 308224, 0xb1dabbcd
0, 241920, 308224, 0x7e851c8c
0, 253440, 308224, 0x8bdea0bf
0, 264960, 308224, 0xecacdb11
0, 276480, 308224, 0xec4c6c41

+ 8
- 0
tests/ref/fate/dfa10 View File

@@ -0,0 +1,8 @@
0, 0, 65024, 0x8f31c3f0
0, 6390, 65024, 0x164a2d82
0, 12780, 65024, 0xbb72b738
0, 19170, 65024, 0x45b93e3a
0, 25560, 65024, 0xcc4019df
0, 31950, 65024, 0x64644557
0, 38340, 65024, 0xb4584b28
0, 44730, 65024, 0x1d87966a

+ 9
- 0
tests/ref/fate/dfa11 View File

@@ -0,0 +1,9 @@
0, 0, 65024, 0x10db5645
0, 6390, 65024, 0xb5d8a5bd
0, 12780, 65024, 0xc9555f27
0, 19170, 65024, 0x74c43f84
0, 25560, 65024, 0x5b2445b0
0, 31950, 65024, 0x8bd5be38
0, 38340, 65024, 0x75ec97da
0, 44730, 65024, 0x34416636
0, 51120, 65024, 0x9cc2abcf

+ 17
- 0
tests/ref/fate/dfa2 View File

@@ -0,0 +1,17 @@
0, 0, 308224, 0x8dc9803f
0, 6390, 308224, 0x06308b37
0, 12780, 308224, 0xb8cb7be6
0, 19170, 308224, 0xc538862b
0, 25560, 308224, 0x8d4b7702
0, 31950, 308224, 0x97a479f0
0, 38340, 308224, 0x63d08e67
0, 44730, 308224, 0x470e8a18
0, 51120, 308224, 0x08aa6be4
0, 57510, 308224, 0x3b2f6f9a
0, 63900, 308224, 0xf0f1490c
0, 70290, 308224, 0xcb8b2ec5
0, 76680, 308224, 0xab361e75
0, 83070, 308224, 0x485aed6d
0, 89460, 308224, 0xd3e7ecb7
0, 95850, 308224, 0xa2c0d561
0, 102240, 308224, 0xd8f8ccd4

+ 10
- 0
tests/ref/fate/dfa3 View File

@@ -0,0 +1,10 @@
0, 0, 65024, 0xbf9d558b
0, 9000, 65024, 0x4c7ea2ac
0, 18000, 65024, 0x4931827c
0, 27000, 65024, 0x5a9e09a7
0, 36000, 65024, 0x2b76eca9
0, 45000, 65024, 0xd5400a96
0, 54000, 65024, 0xcca17f23
0, 63000, 65024, 0xebca0dec
0, 72000, 65024, 0x07a73cfc
0, 81000, 65024, 0xdd5e4620

+ 13
- 0
tests/ref/fate/dfa4 View File

@@ -0,0 +1,13 @@
0, 0, 308224, 0x5a24821c
0, 12780, 308224, 0xa1ecf793
0, 25560, 308224, 0xcb91afa5
0, 38340, 308224, 0x8b7e85b9
0, 51120, 308224, 0xe4755628
0, 63900, 308224, 0xe4755628
0, 76680, 308224, 0xe4755628
0, 89460, 308224, 0xe4755628
0, 102240, 308224, 0xe4755628
0, 115020, 308224, 0xe4755628
0, 127800, 308224, 0xdd6ca523
0, 140580, 308224, 0x961ba417
0, 153360, 308224, 0x5ed15e7f

+ 15
- 0
tests/ref/fate/dfa5 View File

@@ -0,0 +1,15 @@
0, 0, 65024, 0x54831a1a
0, 9000, 65024, 0x110f5bad
0, 18000, 65024, 0xdd4f97fa
0, 27000, 65024, 0x1ab375b2
0, 36000, 65024, 0x311b51d3
0, 45000, 65024, 0xb0614f71
0, 54000, 65024, 0x6d968927
0, 63000, 65024, 0x28d85028
0, 72000, 65024, 0x74ea41f5
0, 81000, 65024, 0x3480b067
0, 90000, 65024, 0x3e1115d4
0, 99000, 65024, 0x0c715b57
0, 108000, 65024, 0x3acaaea3
0, 117000, 65024, 0x1b60f1e8
0, 126000, 65024, 0xcee14632

+ 12
- 0
tests/ref/fate/dfa6 View File

@@ -0,0 +1,12 @@
0, 0, 65024, 0x190f2398
0, 6390, 65024, 0x19d8c3e0
0, 12780, 65024, 0x848020a2
0, 19170, 65024, 0xbb64696f
0, 25560, 65024, 0x85886472
0, 31950, 65024, 0xc9c26668
0, 38340, 65024, 0xf24d1524
0, 44730, 65024, 0x64d98cd0
0, 51120, 65024, 0xa1323b5e
0, 57510, 65024, 0x9f48dcf9
0, 63900, 65024, 0x1a0591da
0, 70290, 65024, 0x8eabf12e

+ 12
- 0
tests/ref/fate/dfa7 View File

@@ -0,0 +1,12 @@
0, 0, 3648, 0xb6174031
0, 6390, 3648, 0x2e4649b0
0, 12780, 3648, 0xe05247cb
0, 19170, 3648, 0x003941f0
0, 25560, 3648, 0xa2563fed
0, 31950, 3648, 0x23d34cf1
0, 38340, 3648, 0x624f5173
0, 44730, 3648, 0xc07a491e
0, 51120, 3648, 0x74214090
0, 57510, 3648, 0xebfd469c
0, 63900, 3648, 0x60083f49
0, 70290, 3648, 0x6096486f

+ 36
- 0
tests/ref/fate/dfa8 View File

@@ -0,0 +1,36 @@
0, 0, 45932, 0xf9bc2e69
0, 6390, 45932, 0x5b8736ad
0, 12780, 45932, 0x4521ba17
0, 19170, 45932, 0xf3a374a9
0, 25560, 45932, 0x3fdfdc70
0, 31950, 45932, 0x4eb18dbb
0, 38340, 45932, 0x633c6377
0, 44730, 45932, 0x77dce8ba
0, 51120, 45932, 0x8246fecd
0, 57510, 45932, 0xe8864c0d
0, 63900, 45932, 0x995740d1
0, 70290, 45932, 0xc8a298ee
0, 76680, 45932, 0xa3535672
0, 83070, 45932, 0xb553f58b
0, 89460, 45932, 0x8a5b3b92
0, 95850, 45932, 0x1bcd50b0
0, 102240, 45932, 0xf22b0531
0, 108630, 45932, 0x5f62bc78
0, 115020, 45932, 0xc669075f
0, 121410, 45932, 0xae3b4e80
0, 127800, 45932, 0x3f52062f
0, 134190, 45932, 0xde97a978
0, 140580, 45932, 0x3ba7ca71
0, 146970, 45932, 0xe418aba1
0, 153360, 45932, 0xb8b3f24b
0, 159750, 45932, 0xd054791d
0, 166140, 45932, 0xddf121ce
0, 172530, 45932, 0xf0dcdd42
0, 178920, 45932, 0xd5aa9281
0, 185310, 45932, 0xffe8450b
0, 191700, 45932, 0x84f9424a
0, 198090, 45932, 0xe6c7592e
0, 204480, 45932, 0xc29c492d
0, 210870, 45932, 0x87186732
0, 217260, 45932, 0x02c73e12
0, 223650, 45932, 0x32eb90c8

+ 6
- 0
tests/ref/fate/dfa9 View File

@@ -0,0 +1,6 @@
0, 0, 77076, 0x33b3bf99
0, 6390, 77076, 0xde70a282
0, 12780, 77076, 0x8d4c10a4
0, 19170, 77076, 0xeb536bcc
0, 25560, 77076, 0x86cce3e8
0, 31950, 77076, 0x292df285

Loading…
Cancel
Save