After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 497964 - theoraenc test fails
theoraenc test fails
Status: RESOLVED FIXED
Product: GStreamer
Classification: Platform
Component: gst-plugins-base
0.10.15
Other Linux
: Normal blocker
: 0.10.16
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2007-11-18 18:08 UTC by Götz Waschk
Modified: 2008-01-14 17:36 UTC
See Also:
GNOME target: ---
GNOME version: 2.21/2.22


Attachments
partial fix (3.60 KB, patch)
2008-01-07 09:12 UTC, Tim-Philipp Müller
none Details | Review

Description Götz Waschk 2007-11-18 18:08:13 UTC
This is on Mandriva Cooker with gstreamer 0.10.15 and theora 1.0beta2:

Running suite(s): theoraenc
OIL: ERROR liboiltest.c 403: oil_test_check_impl(): function sad8x8_8xn_u8_psadbw in class sad8x8_8xn_u8 failed check (247115 > 0) || (outside=0)
OIL: ERROR liboiltest.c 403: oil_test_check_impl(): function sad8x8_8xn_u8_psadbw in class sad8x8_8xn_u8 failed check (247115 > 0) || (outside=0)
OIL: ERROR liboiltest.c 403: oil_test_check_impl(): function sad8x8_8xn_u8_psadbw in class sad8x8_8xn_u8 failed check (247115 > 0) || (outside=0)
33%: Checks: 3, Failures: 2, Errors: 0
pipelines/theoraenc.c:58:F:general:tf:0: expected duration 0:00:00.100000000, but got duration 0:00:00.200000000
pipelines/theoraenc.c:58:F:general:tf:0: expected duration 0:00:00.100000000, but got duration 0:00:00.200000000
FAIL: pipelines/theoraenc


All other tests pass.
Comment 1 Sebastian Dröge (slomo) 2007-12-04 15:18:25 UTC
Same here with theora 1.0beta2
Comment 2 Tim-Philipp Müller 2007-12-06 10:56:09 UTC
Might be due to

libtheora 1.0beta1 (2007 September 22)

 - Granulepos scheme modified to match other codecs. This bumps
   the bitstream revision to 3.2.1. Bitstreams marked 3.2.0 are
   handled correctly by this decoder. Older decoders will show
   a one frame sync error in the less noticable direction.
Comment 3 Sebastian Dröge (slomo) 2007-12-09 05:25:09 UTC
If I understand that correctly this means, that theoradec needs a different granulepos<->time conversion if running with libtheora before 1.0beta1 and if running with libtheora after 1.0beta1, right?
Comment 4 Sebastian Dröge (slomo) 2007-12-18 15:42:54 UTC
Of course I meant theoraenc... but is theoradec/theoraparse also affected when decoding new files?
Comment 5 Sebastian Dröge (slomo) 2008-01-02 12:11:08 UTC
Marking as blocker for the next base release so this isn't forgotten...
Comment 6 Tim-Philipp Müller 2008-01-07 09:12:46 UTC
Created attachment 102305 [details] [review]
partial fix

With this, it fails somewhere else now (probably BUFFER_OFFSET and/or BUFFER_OFFSET_END need tinkering with too).
Comment 7 Sebastian Dröge (slomo) 2008-01-07 09:32:21 UTC
So the granulepos meaning only changed for encoding? I thought, knowing nothing about the Ogg/Theora internals, that the granulepos is something in the bytestream and if it changes for encoding it should be handled differently for decoding/parsing/demuxing too... well, you probably know better :)
Comment 8 Jan Schmidt 2008-01-11 13:26:20 UTC
We need someone that knows the details of the granulepos to comment, and possibly even to fix the test :)

MikeS, thomasvs?
Comment 9 Michael Smith 2008-01-11 15:49:16 UTC
Fixed with:
    * ext/theora/theoradec.c: (gst_theora_dec_class_init),
    (_theora_granule_frame), (_theora_granule_start_time),
    (theora_dec_sink_convert), (theora_dec_decode_buffer):
      Adapt for post-alpha meaning of granulepos, when we
      have a newer version of libtheora.
    * ext/theora/theoraenc.c: (gst_theora_enc_class_init),
    (theora_enc_get_ogg_packet_end_time), (theora_enc_sink_event),
    (theora_enc_is_discontinuous), (theora_enc_chain):
      Likewise.
    * tests/check/Makefile.am:
      Link libtheora into theoraenc test so we can check which version of
      libtheora we're testing against.
    * tests/check/pipelines/theoraenc.c: (check_libtheora),
    (check_buffer_granulepos),
    (check_buffer_granulepos_from_starttime), (GST_START_TEST),
    (theoraenc_suite):
      Adapt tests to check the values that are now defined for theora; make
      the tests backwards-adapt the passed values if we're running against an
      old libtheora.
      Fixes #497964
Comment 10 Sebastian Dröge (slomo) 2008-01-12 03:58:21 UTC
Isn't the same fix missing in theoraparse now?
Comment 11 Sebastian Dröge (slomo) 2008-01-13 19:00:23 UTC
According to Michael theoraparse probably needs the fix too... someone with more theora/ogg knowledge than me should probably investigate before next base release :)
Comment 12 Jan Schmidt 2008-01-14 17:36:07 UTC
Fixed in CVS:

2008-01-14  Jan Schmidt  <jan.schmidt@sun.com>

        * ext/theora/gsttheoradec.h:
        * ext/theora/gsttheoraparse.h:
        * ext/theora/theoradec.c:
        * ext/theora/theoraparse.c:
        Take a 2nd stab at handling libtheora granulepos changes in the decoder
        and parser by inspecting the bitstream version of the incoming data.