Opened 7 years ago

Closed 6 years ago

#1287 closed defect (fixed)

broken demuxing of qcelp/PureVoice in aiff

Reported by: ami_stuff Owned by:
Priority: normal Component: avformat
Version: git-master Keywords: qclp aif
Cc: Blocked By:
Blocking: Reproduced by developer: yes
Analyzed by developer: no

Description

13bps decodes ok and bitrate matches

  Duration: 00:00:05.02, start: 0.000000, bitrate: 14 kb/s
    Stream #0:0: Audio: qcelp (Qclp / 0x706C6351), 8000 Hz, mono, flt, 14 kb/s
C:\>ffmpeg -i 7bps.aif out.wav
ffmpeg version N-40365-gbce42e9 Copyright (c) 2000-2012 the FFmpeg developers
  built on May  5 2012 02:21:15 with gcc 4.5.0 20100414 (Fedora MinGW 4.5.0-1.fc
14)
  configuration: --prefix=/var/www/users/research/ffmpeg/snapshots/build --arch=
x86 --target-os=mingw32 --cross-prefix=i686-pc-mingw32- --cc='ccache i686-pc-min
gw32-gcc' --enable-w32threads --enable-memalign-hack --enable-runtime-cpudetect
--enable-cross-compile --enable-static --disable-shared --extra-libs='-lws2_32 -
lwinmm' --extra-cflags='--static -I/var/www/users/research/ffmpeg/snapshots/buil
d/include' --extra-ldflags='-static -L/var/www/users/research/ffmpeg/snapshots/b
uild/lib' --enable-bzlib --enable-zlib --enable-gpl --enable-version3 --enable-n
onfree --enable-libx264 --enable-libspeex --enable-libtheora --enable-libvorbis
--enable-libfaac --enable-libxvid --enable-libopencore-amrnb --enable-libopencor
e-amrwb --enable-libmp3lame --enable-libvpx --disable-decoder=libvpx
  libavutil      51. 49.100 / 51. 49.100
  libavcodec     54. 19.100 / 54. 19.100
  libavformat    54.  4.100 / 54.  4.100
  libavdevice    53.  4.100 / 53.  4.100
  libavfilter     2. 72.104 /  2. 72.104
  libswscale      2.  1.100 /  2.  1.100
  libswresample   0. 11.100 /  0. 11.100
  libpostproc    52.  0.100 / 52.  0.100
Input #0, aiff, from '7bps.aif':
  Duration: 00:00:05.02, start: 0.000000, bitrate: 7 kb/s
    Stream #0:0: Audio: qcelp (Qclp / 0x706C6351), 8000 Hz, mono, flt, 14 kb/s
Incompatible sample format 'flt' for codec 'pcm_s16le', auto-selecting format 's
16'
Output #0, wav, to 'out.wav':
  Metadata:
    encoder         : Lavf54.4.100
    Stream #0:0: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 8000 Hz, mono, s16, 1
28 kb/s
Stream mapping:
  Stream #0:0 -> #0:0 (qcelp -> pcm_s16le)
Press [q] to stop, [?] for help
[qcelp @ 0x1db2320] Claimed bitrate and buffer size mismatch.
[qcelp @ 0x1db2320] Buffer is too small for the claimed bitrate.
[qcelp @ 0x1db2320] Frame #1, IFQ: bitrate cannot be determined.
[qcelp @ 0x1db2320] Buffer is too small for the claimed bitrate.
[qcelp @ 0x1db2320] Frame #2, IFQ: bitrate cannot be determined.
[qcelp @ 0x1db2320] Buffer is too small for the claimed bitrate.
[qcelp @ 0x1db2320] Frame #3, IFQ: bitrate cannot be determined.
[qcelp @ 0x1db2320] Buffer is too small for the claimed bitrate.
[qcelp @ 0x1db2320] Frame #4, IFQ: bitrate cannot be determined.
[qcelp @ 0x1db2320] Buffer is too small for the claimed bitrate.
[qcelp @ 0x1db2320] Frame #5, IFQ: bitrate cannot be determined.
[qcelp @ 0x1db2320] 'Blank frame handling is experimental.If you want to help, u
pload a sample of this file to ftp://upload.ffmpeg.org/MPlayer/incoming/ and con
tact the ffmpeg-devel mailing list.
[qcelp @ 0x1db2320] Buffer is too small for the claimed bitrate.
[qcelp @ 0x1db2320] Frame #7, IFQ: bitrate cannot be determined.
[qcelp @ 0x1db2320] Buffer is too small for the claimed bitrate.
[qcelp @ 0x1db2320] Frame #8, IFQ: bitrate cannot be determined.
[qcelp @ 0x1db2320] Buffer is too small for the claimed bitrate.
[qcelp @ 0x1db2320] Frame #9, IFQ: bitrate cannot be determined.
[qcelp @ 0x1db2320] Buffer is too small for the claimed bitrate.
[qcelp @ 0x1db2320] Frame #10, IFQ: bitrate cannot be determined.
[qcelp @ 0x1db2320] Buffer is too small for the claimed bitrate.
[qcelp @ 0x1db2320] Frame #11, IFQ: bitrate cannot be determined.
[qcelp @ 0x1db2320] Buffer is too small for the claimed bitrate.
[qcelp @ 0x1db2320] Frame #12, IFQ: bitrate cannot be determined.
[qcelp @ 0x1db2320] Buffer is too small for the claimed bitrate.
[qcelp @ 0x1db2320] Frame #13, IFQ: bitrate cannot be determined.
[qcelp @ 0x1db2320] Buffer is too small for the claimed bitrate.
[qcelp @ 0x1db2320] Frame #14, IFQ: bitrate cannot be determined.
[qcelp @ 0x1db2320] Buffer is too small for the claimed bitrate.
[qcelp @ 0x1db2320] Frame #15, IFQ: bitrate cannot be determined.
[qcelp @ 0x1db2320] Buffer is too small for the claimed bitrate.
[qcelp @ 0x1db2320] Frame #16, IFQ: bitrate cannot be determined.
[qcelp @ 0x1db2320] Buffer is too small for the claimed bitrate.
[qcelp @ 0x1db2320] Frame #18, IFQ: bitrate cannot be determined.
[qcelp @ 0x1db2320] Buffer is too small for the claimed bitrate.
[qcelp @ 0x1db2320] Frame #19, IFQ: bitrate cannot be determined.
[qcelp @ 0x1db2320] Buffer is too small for the claimed bitrate.
[qcelp @ 0x1db2320] Frame #20, IFQ: bitrate cannot be determined.
[qcelp @ 0x1db2320] Buffer is too small for the claimed bitrate.
[qcelp @ 0x1db2320] Frame #21, IFQ: bitrate cannot be determined.
[qcelp @ 0x1db2320] Buffer is too small for the claimed bitrate.
[qcelp @ 0x1db2320] Frame #22, IFQ: bitrate cannot be determined.
[qcelp @ 0x1db2320] Buffer is too small for the claimed bitrate.
[qcelp @ 0x1db2320] Frame #23, IFQ: bitrate cannot be determined.
[qcelp @ 0x1db2320] Buffer is too small for the claimed bitrate.
[qcelp @ 0x1db2320] Frame #24, IFQ: bitrate cannot be determined.
[qcelp @ 0x1db2320] Buffer is too small for the claimed bitrate.
[qcelp @ 0x1db2320] Frame #25, IFQ: bitrate cannot be determined.
[qcelp @ 0x1db2320] Buffer is too small for the claimed bitrate.
[qcelp @ 0x1db2320] Frame #26, IFQ: bitrate cannot be determined.
[qcelp @ 0x1db2320] Buffer is too small for the claimed bitrate.
[qcelp @ 0x1db2320] Frame #27, IFQ: bitrate cannot be determined.
[qcelp @ 0x1db2320] Buffer is too small for the claimed bitrate.
[qcelp @ 0x1db2320] Frame #28, IFQ: bitrate cannot be determined.
[qcelp @ 0x1db2320] Buffer is too small for the claimed bitrate.
[qcelp @ 0x1db2320] Frame #29, IFQ: bitrate cannot be determined.
[qcelp @ 0x1db2320] Buffer is too small for the claimed bitrate.
[qcelp @ 0x1db2320] Frame #30, IFQ: bitrate cannot be determined.
[qcelp @ 0x1db2320] Buffer is too small for the claimed bitrate.
[qcelp @ 0x1db2320] Frame #31, IFQ: bitrate cannot be determined.
[qcelp @ 0x1db2320] Buffer is too small for the claimed bitrate.
[qcelp @ 0x1db2320] Frame #32, IFQ: bitrate cannot be determined.
[qcelp @ 0x1db2320] Buffer is too small for the claimed bitrate.
[qcelp @ 0x1db2320] Frame #33, IFQ: bitrate cannot be determined.
[qcelp @ 0x1db2320] Buffer is too small for the claimed bitrate.
[qcelp @ 0x1db2320] Frame #35, IFQ: bitrate cannot be determined.
[qcelp @ 0x1db2320] Buffer is too small for the claimed bitrate.
[qcelp @ 0x1db2320] Frame #36, IFQ: bitrate cannot be determined.
[qcelp @ 0x1db2320] Buffer is too small for the claimed bitrate.
[qcelp @ 0x1db2320] Frame #37, IFQ: bitrate cannot be determined.
[qcelp @ 0x1db2320] Buffer is too small for the claimed bitrate.
[qcelp @ 0x1db2320] Frame #38, IFQ: bitrate cannot be determined.
[qcelp @ 0x1db2320] Buffer is too small for the claimed bitrate.
[qcelp @ 0x1db2320] Frame #39, IFQ: bitrate cannot be determined.
[qcelp @ 0x1db2320] Buffer is too small for the claimed bitrate.
[qcelp @ 0x1db2320] Frame #40, IFQ: bitrate cannot be determined.
[qcelp @ 0x1db2320] Buffer is too small for the claimed bitrate.
[qcelp @ 0x1db2320] Frame #41, IFQ: bitrate cannot be determined.
[qcelp @ 0x1db2320] Buffer is too small for the claimed bitrate.
[qcelp @ 0x1db2320] Frame #42, IFQ: bitrate cannot be determined.
[qcelp @ 0x1db2320] Buffer is too small for the claimed bitrate.
[qcelp @ 0x1db2320] Frame #43, IFQ: bitrate cannot be determined.
[qcelp @ 0x1db2320] Buffer is too small for the claimed bitrate.
[qcelp @ 0x1db2320] Frame #44, IFQ: bitrate cannot be determined.
[qcelp @ 0x1db2320] Buffer is too small for the claimed bitrate.
[qcelp @ 0x1db2320] Frame #45, IFQ: bitrate cannot be determined.
[qcelp @ 0x1db2320] Buffer is too small for the claimed bitrate.
[qcelp @ 0x1db2320] Frame #46, IFQ: bitrate cannot be determined.
[qcelp @ 0x1db2320] Buffer is too small for the claimed bitrate.
[qcelp @ 0x1db2320] Frame #47, IFQ: bitrate cannot be determined.
[qcelp @ 0x1db2320] Buffer is too small for the claimed bitrate.
[qcelp @ 0x1db2320] Frame #48, IFQ: bitrate cannot be determined.
[qcelp @ 0x1db2320] Buffer is too small for the claimed bitrate.
[qcelp @ 0x1db2320] Frame #49, IFQ: bitrate cannot be determined.
[qcelp @ 0x1db2320] Buffer is too small for the claimed bitrate.
[qcelp @ 0x1db2320] Frame #50, IFQ: bitrate cannot be determined.
[qcelp @ 0x1db2320] Buffer is too small for the claimed bitrate.
[qcelp @ 0x1db2320] Frame #52, IFQ: bitrate cannot be determined.
[qcelp @ 0x1db2320] Buffer is too small for the claimed bitrate.
[qcelp @ 0x1db2320] Frame #53, IFQ: bitrate cannot be determined.
[qcelp @ 0x1db2320] Buffer is too small for the claimed bitrate.
[qcelp @ 0x1db2320] Frame #54, IFQ: bitrate cannot be determined.
[qcelp @ 0x1db2320] Buffer is too small for the claimed bitrate.
[qcelp @ 0x1db2320] Frame #55, IFQ: bitrate cannot be determined.
[qcelp @ 0x1db2320] Buffer is too small for the claimed bitrate.
[qcelp @ 0x1db2320] Frame #56, IFQ: bitrate cannot be determined.
[qcelp @ 0x1db2320] Buffer is too small for the claimed bitrate.
[qcelp @ 0x1db2320] Frame #57, IFQ: bitrate cannot be determined.
[qcelp @ 0x1db2320] Buffer is too small for the claimed bitrate.
[qcelp @ 0x1db2320] Frame #58, IFQ: bitrate cannot be determined.
[qcelp @ 0x1db2320] Buffer is too small for the claimed bitrate.
[qcelp @ 0x1db2320] Frame #59, IFQ: bitrate cannot be determined.
[qcelp @ 0x1db2320] Buffer is too small for the claimed bitrate.
[qcelp @ 0x1db2320] Frame #60, IFQ: bitrate cannot be determined.
[qcelp @ 0x1db2320] Buffer is too small for the claimed bitrate.
[qcelp @ 0x1db2320] Frame #61, IFQ: bitrate cannot be determined.
[qcelp @ 0x1db2320] Buffer is too small for the claimed bitrate.
[qcelp @ 0x1db2320] Frame #62, IFQ: bitrate cannot be determined.
[qcelp @ 0x1db2320] Buffer is too small for the claimed bitrate.
[qcelp @ 0x1db2320] Frame #63, IFQ: bitrate cannot be determined.
[qcelp @ 0x1db2320] Buffer is too small for the claimed bitrate.
[qcelp @ 0x1db2320] Frame #64, IFQ: bitrate cannot be determined.
[qcelp @ 0x1db2320] Buffer is too small for the claimed bitrate.
[qcelp @ 0x1db2320] Frame #65, IFQ: bitrate cannot be determined.
[qcelp @ 0x1db2320] Buffer is too small for the claimed bitrate.
[qcelp @ 0x1db2320] Frame #66, IFQ: bitrate cannot be determined.
[qcelp @ 0x1db2320] Buffer is too small for the claimed bitrate.
[qcelp @ 0x1db2320] Frame #67, IFQ: bitrate cannot be determined.
[qcelp @ 0x1db2320] Buffer is too small for the claimed bitrate.
[qcelp @ 0x1db2320] Frame #69, IFQ: bitrate cannot be determined.
[qcelp @ 0x1db2320] Buffer is too small for the claimed bitrate.
[qcelp @ 0x1db2320] Frame #70, IFQ: bitrate cannot be determined.
[qcelp @ 0x1db2320] Buffer is too small for the claimed bitrate.
[qcelp @ 0x1db2320] Frame #71, IFQ: bitrate cannot be determined.
[qcelp @ 0x1db2320] Buffer is too small for the claimed bitrate.
[qcelp @ 0x1db2320] Frame #72, IFQ: bitrate cannot be determined.
[qcelp @ 0x1db2320] Buffer is too small for the claimed bitrate.
[qcelp @ 0x1db2320] Frame #73, IFQ: bitrate cannot be determined.
[qcelp @ 0x1db2320] Buffer is too small for the claimed bitrate.
[qcelp @ 0x1db2320] Frame #74, IFQ: bitrate cannot be determined.
[qcelp @ 0x1db2320] Buffer is too small for the claimed bitrate.
[qcelp @ 0x1db2320] Frame #75, IFQ: bitrate cannot be determined.
[qcelp @ 0x1db2320] Buffer is too small for the claimed bitrate.
[qcelp @ 0x1db2320] Frame #76, IFQ: bitrate cannot be determined.
[qcelp @ 0x1db2320] Buffer is too small for the claimed bitrate.
[qcelp @ 0x1db2320] Frame #77, IFQ: bitrate cannot be determined.
[qcelp @ 0x1db2320] Buffer is too small for the claimed bitrate.
[qcelp @ 0x1db2320] Frame #78, IFQ: bitrate cannot be determined.
[qcelp @ 0x1db2320] Buffer is too small for the claimed bitrate.
[qcelp @ 0x1db2320] Frame #79, IFQ: bitrate cannot be determined.
[qcelp @ 0x1db2320] Buffer is too small for the claimed bitrate.
[qcelp @ 0x1db2320] Frame #80, IFQ: bitrate cannot be determined.
[qcelp @ 0x1db2320] Buffer is too small for the claimed bitrate.
[qcelp @ 0x1db2320] Frame #81, IFQ: bitrate cannot be determined.
[qcelp @ 0x1db2320] Buffer is too small for the claimed bitrate.
[qcelp @ 0x1db2320] Frame #82, IFQ: bitrate cannot be determined.
[qcelp @ 0x1db2320] Buffer is too small for the claimed bitrate.
[qcelp @ 0x1db2320] Frame #83, IFQ: bitrate cannot be determined.
[qcelp @ 0x1db2320] Buffer is too small for the claimed bitrate.
[qcelp @ 0x1db2320] Frame #84, IFQ: bitrate cannot be determined.
[qcelp @ 0x1db2320] Buffer is too small for the claimed bitrate.
[qcelp @ 0x1db2320] Frame #86, IFQ: bitrate cannot be determined.
[qcelp @ 0x1db2320] Buffer is too small for the claimed bitrate.
[qcelp @ 0x1db2320] Frame #87, IFQ: bitrate cannot be determined.
[qcelp @ 0x1db2320] Buffer is too small for the claimed bitrate.
[qcelp @ 0x1db2320] Frame #88, IFQ: bitrate cannot be determined.
[qcelp @ 0x1db2320] Buffer is too small for the claimed bitrate.
[qcelp @ 0x1db2320] Frame #89, IFQ: bitrate cannot be determined.
[qcelp @ 0x1db2320] Buffer is too small for the claimed bitrate.
[qcelp @ 0x1db2320] Frame #90, IFQ: bitrate cannot be determined.
[qcelp @ 0x1db2320] Buffer is too small for the claimed bitrate.
[qcelp @ 0x1db2320] Frame #91, IFQ: bitrate cannot be determined.
[qcelp @ 0x1db2320] Buffer is too small for the claimed bitrate.
[qcelp @ 0x1db2320] Frame #92, IFQ: bitrate cannot be determined.
[qcelp @ 0x1db2320] Buffer is too small for the claimed bitrate.
[qcelp @ 0x1db2320] Frame #93, IFQ: bitrate cannot be determined.
[qcelp @ 0x1db2320] Buffer is too small for the claimed bitrate.
[qcelp @ 0x1db2320] Frame #94, IFQ: bitrate cannot be determined.
[qcelp @ 0x1db2320] Buffer is too small for the claimed bitrate.
[qcelp @ 0x1db2320] Frame #95, IFQ: bitrate cannot be determined.
[qcelp @ 0x1db2320] Buffer is too small for the claimed bitrate.
[qcelp @ 0x1db2320] Frame #96, IFQ: bitrate cannot be determined.
[qcelp @ 0x1db2320] Buffer is too small for the claimed bitrate.
[qcelp @ 0x1db2320] Frame #97, IFQ: bitrate cannot be determined.
[qcelp @ 0x1db2320] Buffer is too small for the claimed bitrate.
[qcelp @ 0x1db2320] Frame #98, IFQ: bitrate cannot be determined.
[qcelp @ 0x1db2320] Buffer is too small for the claimed bitrate.
[qcelp @ 0x1db2320] Frame #99, IFQ: bitrate cannot be determined.
[qcelp @ 0x1db2320] Buffer is too small for the claimed bitrate.
[qcelp @ 0x1db2320] Frame #100, IFQ: bitrate cannot be determined.
[qcelp @ 0x1db2320] Buffer is too small for the claimed bitrate.
[qcelp @ 0x1db2320] Frame #101, IFQ: bitrate cannot be determined.
[qcelp @ 0x1db2320] Buffer is too small for the claimed bitrate.
[qcelp @ 0x1db2320] Frame #103, IFQ: bitrate cannot be determined.
[qcelp @ 0x1db2320] Buffer is too small for the claimed bitrate.
[qcelp @ 0x1db2320] Frame #104, IFQ: bitrate cannot be determined.
[qcelp @ 0x1db2320] Buffer is too small for the claimed bitrate.
[qcelp @ 0x1db2320] Frame #105, IFQ: bitrate cannot be determined.
[qcelp @ 0x1db2320] Buffer is too small for the claimed bitrate.
[qcelp @ 0x1db2320] Frame #106, IFQ: bitrate cannot be determined.
[qcelp @ 0x1db2320] Buffer is too small for the claimed bitrate.
[qcelp @ 0x1db2320] Frame #107, IFQ: bitrate cannot be determined.
[qcelp @ 0x1db2320] Buffer is too small for the claimed bitrate.
[qcelp @ 0x1db2320] Frame #108, IFQ: bitrate cannot be determined.
[qcelp @ 0x1db2320] Buffer is too small for the claimed bitrate.
[qcelp @ 0x1db2320] Frame #109, IFQ: bitrate cannot be determined.
[qcelp @ 0x1db2320] Buffer is too small for the claimed bitrate.
[qcelp @ 0x1db2320] Frame #110, IFQ: bitrate cannot be determined.
[qcelp @ 0x1db2320] Buffer is too small for the claimed bitrate.
[qcelp @ 0x1db2320] Frame #111, IFQ: bitrate cannot be determined.
[qcelp @ 0x1db2320] Buffer is too small for the claimed bitrate.
[qcelp @ 0x1db2320] Frame #112, IFQ: bitrate cannot be determined.
[qcelp @ 0x1db2320] Buffer is too small for the claimed bitrate.
[qcelp @ 0x1db2320] Frame #113, IFQ: bitrate cannot be determined.
[qcelp @ 0x1db2320] Buffer is too small for the claimed bitrate.
[qcelp @ 0x1db2320] Frame #114, IFQ: bitrate cannot be determined.
[qcelp @ 0x1db2320] Buffer is too small for the claimed bitrate.
[qcelp @ 0x1db2320] Frame #115, IFQ: bitrate cannot be determined.
[qcelp @ 0x1db2320] Buffer is too small for the claimed bitrate.
[qcelp @ 0x1db2320] Frame #116, IFQ: bitrate cannot be determined.
[qcelp @ 0x1db2320] Buffer is too small for the claimed bitrate.
[qcelp @ 0x1db2320] Frame #117, IFQ: bitrate cannot be determined.
[qcelp @ 0x1db2320] Buffer is too small for the claimed bitrate.
[qcelp @ 0x1db2320] Frame #118, IFQ: bitrate cannot be determined.
[qcelp @ 0x1db2320] Buffer is too small for the claimed bitrate.
[qcelp @ 0x1db2320] Frame #120, IFQ: bitrate cannot be determined.
[qcelp @ 0x1db2320] Frame #121, IFQ: bitrate cannot be determined.
size=      38kB time=00:00:02.44 bitrate= 128.2kbits/s
video:0kB audio:38kB global headers:0kB muxing overhead 0.117828%

Attachments (4)

7bps.aif (4.3 KB) - added by ami_stuff 7 years ago.
13bps.aif (8.8 KB) - added by ami_stuff 7 years ago.
7000.aif (10.6 KB) - added by ami_stuff 6 years ago.
13000.aif (21.7 KB) - added by ami_stuff 6 years ago.

Download all attachments as: .zip

Change History (11)

Changed 7 years ago by ami_stuff

Changed 7 years ago by ami_stuff

comment:1 Changed 7 years ago by cehoyos

  • Component changed from undetermined to avcodec
  • Keywords qclp added
  • Reproduced by developer set
  • Status changed from new to open
  • Version changed from unspecified to git-master

comment:2 follow-up: Changed 6 years ago by richardpl

  • Analyzed by developer set
  • Component changed from avcodec to avformat
  • Keywords aiff added
  • Summary changed from purevoice: too small buffer for bitrate to broken demuxing of qcelp/PureVoice in aiff

What created such files?

QCELP in aiff have hardcoded block align, which is correct only for cbr case when only 35 byte frame is used.
Usually each frame have first byte that maps to frame size, so definitely this is demuxer bug.

comment:3 Changed 6 years ago by cehoyos

  • Keywords aif added; aiff removed

comment:4 in reply to: ↑ 2 Changed 6 years ago by ami_stuff

Replying to richardpl:

What created such files?

I don't remember correctly, but I probably used some external tool which supported QT components for writing.

(Attached files plays ok with current QT)

comment:5 Changed 6 years ago by ami_stuff

Actually QT itself creates such files - there is a possibility to select 7000bps or 13000bps mode for encoding.

Changed 6 years ago by ami_stuff

Changed 6 years ago by ami_stuff

comment:6 Changed 6 years ago by cehoyos

  • Analyzed by developer unset

Patch on mailing list.
Do I understand correctly that it is not possible to select a smaller bitrate?

comment:7 Changed 6 years ago by cehoyos

  • Resolution set to fixed
  • Status changed from open to closed

Should be fixed, thank you for the samples!

Note: See TracTickets for help on using tickets.