Opened 11 years ago

Closed 11 years ago

Last modified 10 years ago

#165 closed defect (fixed)

QT Cinepak - plays in negative

Reported by: ami_stuff Owned by:
Priority: normal Component: undetermined
Version: git-master Keywords: cinepak roundup
Cc: Blocked By:
Blocking: Reproduced by developer: yes
Analyzed by developer: no

Description

Issue 1067

Author: ami_stuff 	Date: 2009-05-09.23:48:26 	

Attached video plays in negative.

The video plays correctly with "VLC media player" and "Media Player Classic".

--------


C:\>ffmpeg -i play_in_negative.mov
FFmpeg version SVN-r18709, Copyright (c) 2000-2009 Fabrice Bellard, et al.
  configuration: --enable-memalign-hack --prefix=/mingw --cross-prefix=i686-ming
w32- --cc=ccache-i686-mingw32-gcc --target-os=mingw32 --arch=i686 --cpu=i686 --e
nable-avisynth --enable-gpl --enable-zlib --enable-bzlib --enable-libgsm --enabl
e-libfaac --enable-libfaad --enable-pthreads --enable-libvorbis --enable-libtheo
ra --enable-libspeex --enable-libmp3lame --enable-libopenjpeg --enable-libxvid -
-enable-libschroedinger --enable-libx264
  libavutil     50. 3. 0 / 50. 3. 0
  libavcodec    52.27. 0 / 52.27. 0
  libavformat   52.32. 0 / 52.32. 0
  libavdevice   52. 2. 0 / 52. 2. 0
  libswscale     0. 7. 1 /  0. 7. 1
  built on Apr 28 2009 04:04:42, gcc: 4.2.4

Seems stream 1 codec frame rate differs from container frame rate: 1000000.00 (1
000000/1) -> 24.00 (1000000/41667)
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'play_in_negative.mov':
  Duration: 00:00:05.95, start: 0.000000, bitrate: 963 kb/s
    Stream #0.0(eng): Audio: pcm_alaw, 11025 Hz, mono, s16, 88 kb/s
    Stream #0.1(eng): Video: cinepak, pal8, 192x128, 24 tbr, 1000k tbn, 1000k tb
c
At least one output file must be specified
bcoudurier 	Date: 2009-05-10.03:56:06 	

Problem is the palette. Palette stored in stsd in .mov must reversed, ie
palette[0] must be 0 and not 255 as it is currently computed.

Question remains wether we should fix palette handling first :>
I don't know much about cinepak, so I cannot say if it would be better to
compute palette in decoder instead.

How is it stored in .avi ?
Author: ami_stuff 	Date: 2011-01-17.13:32:40 	

regression since r12272

Author: bcoudurier
Date: Thu Feb 28 17:05:19 2008
New Revision: 12272

Log:
set codec bps to grayscale bits, fix 256grey.mov

Modified:
   trunk/libavformat/mov.c

Modified: trunk/libavformat/mov.c
==============================================================================
--- trunk/libavformat/mov.c	(original)
+++ trunk/libavformat/mov.c	Thu Feb 28 17:05:19 2008
@@ -725,7 +725,8 @@ static int mov_read_stsd(MOVContext *c, 
 
             st->codec->bits_per_sample = get_be16(pb); /* depth */
             st->codec->color_table_id = get_be16(pb); /* colortable id */
-
+            dprintf(c->fc, "depth %d, ctab id %d\n",
+                   st->codec->bits_per_sample, st->codec->color_table_id);
             /* figure out the palette situation */
             color_depth = st->codec->bits_per_sample & 0x1F;
             color_greyscale = st->codec->bits_per_sample & 0x20;
@@ -735,6 +736,7 @@ static int mov_read_stsd(MOVContext *c, 
                 (color_depth == 8)) {
                 if (color_greyscale) {
                     /* compute the greyscale palette */
+                    st->codec->bits_per_sample = color_depth;
                     color_count = 1 << color_depth;
                     color_index = 255;
                     color_dec = 256 / (color_count - 1);

Attachments (2)

play_in_negative.mov (701.1 KB ) - added by ami_stuff 11 years ago.
patchmovcinepak.diff (713 bytes ) - added by Carl Eugen Hoyos 11 years ago.

Download all attachments as: .zip

Change History (11)

by ami_stuff, 11 years ago

Attachment: play_in_negative.mov added

comment:1 by ami_stuff, 11 years ago

I have created QT Cinepak grayscale files with differen QT versions (Win) and all of the files plays in grayscale, so the question is which software was used to create 256grey.mov.

comment:2 by ami_stuff, 11 years ago

*all of the files plays in negative of course

comment:4 by ami_stuff, 11 years ago

I propose to reverse r12272 if no one know how to fix this issue

Seems like this patch can't be reverted, because the revert will broke for example decoding of QT BMP 16 grayscale and QT BMP 256 grayscale, so a better solution must be found.

comment:5 by Carl Eugen Hoyos, 11 years ago

Reproduced by developer: set
Status: newopen
Version: unspecifiedgit-master

Possible fix attached.

by Carl Eugen Hoyos, 11 years ago

Attachment: patchmovcinepak.diff added

comment:6 by ami_stuff, 11 years ago

fixes the problem for me

comment:7 by Michael Niedermayer, 11 years ago

Resolution: fixed
Status: openclosed

comment:8 by Carl Eugen Hoyos, 11 years ago

Keywords: cinepak added

comment:9 by Carl Eugen Hoyos, 10 years ago

Keywords: roundup added
Note: See TracTickets for help on using tickets.