[Bug 642690] [baseaudio] GstBaseAudioEncoder and GstBaseAudioDecoder class

GStreamer (bugzilla.gnome.org) bugzilla at gnome.org
Fri Aug 12 10:25:52 PDT 2011


https://bugzilla.gnome.org/show_bug.cgi?id=642690
  GStreamer | gst-plugins-base | git

--- Comment #12 from Tim-Philipp Müller <t.i.m at zen.co.uk> 2011-08-12 17:25:45 UTC ---
Some niggles:

 === baseaudioutils ===

 - should all be folded into audio.c (without the
   _base_ stuff) now that we're moving it into
   libgstaudio directly

 - GstAudioState isn't really a state, more like
   an audio format description

 - GstAudioState: some overlap with GstRingBufferSpec
   and the (slightly misnamed) GstBufferFormat and the
   buffer_parse_caps stuff. Not quite sure what follows
   from that, it just feels like we could do something
   better here.

 - GstAudioState: needs new/free or init/clear functions,
   since channel positions are g_malloc()ed.

 - _parse_caps(): is the changed parameter widely-used
    here? Feels cleaner to separate parsed + compare.

 - GTypes for the structs (as Sebastian already said)


 === baseaudioencoder ===

 - GstBaseAudioEncoderContext "deriving" from
    GstAudioState seems a bit weird - are they really
    related? It's going to be awkward for bindings,
    because if we just register boxed types we can't
    derive from another struct / boxed type.

 - in fact, I'm not sure I see the point of the
   Context struct at all - what does it buy us?

   It's not used in any part of the API directly, so
   it doesn't serve to ensure future extensibility
   like in the case of GstBaseParseFrame or
   GstVideoFrame. Seems to me that maybe
   we should just get rid of it and add
   _set_foo_bar() API for the various fields
   instead, to be used by the subclasses?

 - add setters+getters for the properties?

 - "granulepos" - maybe we can come up with
    a better property name? $verb-granulepos
    or so instead of $noun :)

 - "perfect-ts":  would perfect-timestamp[s]
   or "perfect-time" be better maybe? The
   rtp payloaders use perfect-rtptime and
   identity has check-perfect-timestamp,
   for comparison.

 - "tolerance": encodebin has "audio-jitter-tolerance",
   which is long, but more descriptive. Though the audio
   is somewhat implied here I guess. audiorate also
   uses "tolerance" of course. oggmux uses "max-tolerance".

 - the event vfunc returns a boolean, which makes it
   hard to differentiate between FALSE = "drop event"
   and "not handled, do with it what you want" or
   "handled, but return FALSE". Maybe subclass should
   be required to chain up to parent class event func
   explicitly to support these variations? (But then I
   guess it's not so important if you haven't found a 
   need for that during your plugin porting so far).


 === baseaudiodecoder ===

 - same comment as above regarding
    GstBaseAudioDecoderContext

 - "plc" => "packet-loss-concealment" ?

 - explicit getters/setters for properties?

 - re. event vfunc see above

 - re. "tolerance" see above

 - "latency" - if this is a minimum, maybe
   name it as such? (dunno)


I'm happy to help re-shuffle things if needed/desired.

-- 
Configure bugmail: https://bugzilla.gnome.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.
You are the assignee for the bug.


More information about the gstreamer-bugs mailing list