From 9003ed34ba8e694b44433597c890affac369c368 Mon Sep 17 00:00:00 2001 From: "Ronald S. Bultje" Date: Thu, 1 Jan 2004 22:45:57 +0000 Subject: configure.ac: Fix configure check for mpeg2enc. We need 1.6.1.93 instead of 1.6.1.92, since the pkg-config file of 1.... Original commit message from CVS: 2004-01-01 Ronald Bultje * configure.ac: Fix configure check for mpeg2enc. We need 1.6.1.93 instead of 1.6.1.92, since the pkg-config file of 1.6.1.92 is borked and it therefore uses the wrong include paths. Too bad... Note that 1.6.1.93 is not release yet. ;). Also add a check for mplex, which is now using the lib'ified mplex from mjpegtools, too. * ext/ffmpeg/gstffmpegcodecmap.c: Add codec_tag for 3ivx/xvid. For xvid, this should fix playback issues. I don't think ffmpeg handles 3ivx correctly, so this probably won't work. But it won't hurt either. * ext/ffmpeg/gstffmpegdec.c: (gst_ffmpegdec_connect), (gst_ffmpegdec_chain): * ext/ffmpeg/gstffmpegenc.c: (gst_ffmpegenc_connect), (gst_ffmpegenc_chain_audio): Fix memleak in audio encoding. Close codec if open fails, this calls the cleanup routines so we can re-use the context. * ext/mpeg2enc/gstmpeg2enc.cc: Fix pad template names/types, fix memory issue with getcaps(). * ext/mpeg2enc/gstmpeg2encoder.cc: * ext/mpeg2enc/gstmpeg2encoder.hh: Fix compile issue with new caps system (const thingy). * ext/mpeg2enc/gstmpeg2encpicturereader.cc: * ext/mpeg2enc/gstmpeg2encpicturereader.hh: We read a first frame right on initing, so that we have a caps when we init the output. This caps is cached in padprivate and read as first frame. * ext/mplex/Makefile.am: * ext/mplex/gstmplex.cc: * ext/mplex/gstmplex.h: * ext/mplex/gstmplex.hh: * ext/mplex/gstmplexibitstream.cc: * ext/mplex/gstmplexibitstream.hh: * ext/mplex/gstmplexjob.cc: * ext/mplex/gstmplexjob.hh: * ext/mplex/gstmplexoutputstream.cc: * ext/mplex/gstmplexoutputstream.hh: We wrap mjpegtools mplex. So I rewrote the plugin. The old plugin had issues, didn't do capsnego, supported only a subset of the mplex features and required a mplex fork in our local CVS. Plus that it worked agaist a very old mplex version. Rewriting was faster than updating it. * gst-libs/ext/Makefile.am: * gst-libs/ext/mplex/INSTRUCT: * gst-libs/ext/mplex/Makefile.am: * gst-libs/ext/mplex/README: * gst-libs/ext/mplex/TODO: * gst-libs/ext/mplex/ac3strm_in.cc: * gst-libs/ext/mplex/audiostrm.hh: * gst-libs/ext/mplex/audiostrm_out.cc: * gst-libs/ext/mplex/aunit.hh: * gst-libs/ext/mplex/bits.cc: * gst-libs/ext/mplex/bits.hh: * gst-libs/ext/mplex/buffer.cc: * gst-libs/ext/mplex/buffer.hh: * gst-libs/ext/mplex/fastintfns.h: * gst-libs/ext/mplex/format_codes.h: * gst-libs/ext/mplex/inputstrm.cc: * gst-libs/ext/mplex/inputstrm.hh: * gst-libs/ext/mplex/lpcmstrm_in.cc: * gst-libs/ext/mplex/mjpeg_logging.cc: * gst-libs/ext/mplex/mjpeg_logging.h: * gst-libs/ext/mplex/mjpeg_types.h: * gst-libs/ext/mplex/mpastrm_in.cc: * gst-libs/ext/mplex/mpegconsts.cc: * gst-libs/ext/mplex/mpegconsts.h: * gst-libs/ext/mplex/mplexconsts.hh: * gst-libs/ext/mplex/multplex.cc: * gst-libs/ext/mplex/outputstream.hh: * gst-libs/ext/mplex/padstrm.cc: * gst-libs/ext/mplex/padstrm.hh: * gst-libs/ext/mplex/stillsstream.cc: * gst-libs/ext/mplex/stillsstream.hh: * gst-libs/ext/mplex/systems.cc: * gst-libs/ext/mplex/systems.hh: * gst-libs/ext/mplex/vector.cc: * gst-libs/ext/mplex/vector.hh: * gst-libs/ext/mplex/videostrm.hh: * gst-libs/ext/mplex/videostrm_in.cc: * gst-libs/ext/mplex/videostrm_out.cc: * gst-libs/ext/mplex/yuv4mpeg.cc: * gst-libs/ext/mplex/yuv4mpeg.h: * gst-libs/ext/mplex/yuv4mpeg_intern.h: * gst-libs/ext/mplex/yuv4mpeg_ratio.cc: We don't fork mjpegtools' mplex in our CVS anymore. * gst/avi/gstavidemux.c: (gst_avi_demux_src_getcaps), (gst_avi_demux_add_stream): * gst/avi/gstavidemux.h: Add getcaps() function for proper caps nego. This makes some parts of AVI playback/reading work. * sys/ximage/ximagesink.c: (gst_ximagesink_sinkconnect): Resize window on new capsnego. This is probably wrong, but I'm still committing it because with current capsnego, the first successfull capsnego is auto-fixated, therefore rounded down to the lowest values in the caps. this results in a 16x16 XWindow that is not reized when real capsnego finishes. Dave, I see more cases of this, do you know a proper solution? * tools/gst-launch-ext.in: Fix MPEG-4 AAC (Apple iPod/iTunes) file commandline. --- gst-libs/ext/mplex/inputstrm.cc | 250 ---------------------------------------- 1 file changed, 250 deletions(-) delete mode 100644 gst-libs/ext/mplex/inputstrm.cc (limited to 'gst-libs/ext/mplex/inputstrm.cc') diff --git a/gst-libs/ext/mplex/inputstrm.cc b/gst-libs/ext/mplex/inputstrm.cc deleted file mode 100644 index 64edec54..00000000 --- a/gst-libs/ext/mplex/inputstrm.cc +++ /dev/null @@ -1,250 +0,0 @@ - -/* - * inputstrm.c: Base classes related to muxing out input streams into - * the output stream. - * - * Copyright (C) 2001 Andrew Stevens - * - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of version 2 of the GNU General Public License - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ - - -#include -#include -#include "fastintfns.h" -#include "inputstrm.hh" -#include "outputstream.hh" - -MuxStream::MuxStream ():init (false) -{ -} - - -void -MuxStream::Init (const int strm_id, - const unsigned int _buf_scale, - const unsigned int buf_size, - const unsigned int _zero_stuffing, bool bufs_in_first, bool always_bufs) -{ - stream_id = strm_id; - nsec = 0; - zero_stuffing = _zero_stuffing; - buffer_scale = _buf_scale; - buffer_size = buf_size; - bufmodel.Init (buf_size); - buffers_in_header = bufs_in_first; - always_buffers_in_header = always_bufs; - new_au_next_sec = true; - init = true; -} - - - -unsigned int -MuxStream::BufferSizeCode () -{ - if (buffer_scale == 1) - return buffer_size / 1024; - else if (buffer_scale == 0) - return buffer_size / 128; - else - assert (false); - return 0; -} - - - -ElementaryStream::ElementaryStream (IBitStream & ibs, OutputStream & into, stream_kind _kind): -InputStream (ibs), muxinto (into), kind (_kind), buffer_min (INT_MAX), buffer_max (1) -{ -} - - -bool ElementaryStream::NextAU () -{ - Aunit * - p_au = - next (); - - if (p_au != NULL) { - au = p_au; - au_unsent = p_au->length; - return true; - } else { - au_unsent = 0; - return false; - } -} - - -Aunit * -ElementaryStream::Lookahead () -{ - return aunits.lookahead (); -} - -unsigned int -ElementaryStream::BytesToMuxAUEnd (unsigned int sector_transport_size) -{ - return (au_unsent / min_packet_data) * sector_transport_size + - (au_unsent % min_packet_data) + (sector_transport_size - min_packet_data); -} - - -/****************************************************************** - * ElementaryStream::ReadPacketPayload - * - * Reads the stream data from actual input stream, updates decode - * buffer model and current access unit information from the - * look-ahead scanning buffer to account for bytes_muxed bytes being - * muxed out. Particular important is the maintenance of "au_unsent" - * the count of how much data in the current AU remains umuxed. It - * not only allows us to keep track of AU's but is also used for - * generating substream headers - * - * Unless we need to over-ride it to handle sub-stream headers - * The packet payload for an elementary stream is simply the parsed and - * spliced buffered stream data.. - * - ******************************************************************/ - - - -unsigned int -ElementaryStream::ReadPacketPayload (uint8_t * dst, unsigned int to_read) -{ - unsigned int actually_read = bs.read_buffered_bytes (dst, to_read); - - Muxed (actually_read); - return actually_read; -} - - - - -void -ElementaryStream::Muxed (unsigned int bytes_muxed) -{ - clockticks decode_time; - - if (bytes_muxed == 0 || MuxCompleted ()) - return; - - - /* Work through what's left of the current AU and the following AU's - updating the info until we reach a point where an AU had to be - split between packets. - NOTE: It *is* possible for this loop to iterate. - - The DTS/PTS field for the packet in this case would have been - given the that for the first AU to start in the packet. - Whether Joe-Blow's hardware VCD player handles this properly is - another matter of course! - */ - - decode_time = RequiredDTS (); - while (au_unsent < bytes_muxed) { - - bufmodel.Queued (au_unsent, decode_time); - bytes_muxed -= au_unsent; - if (!NextAU ()) - return; - new_au_next_sec = true; - decode_time = RequiredDTS (); - }; - - // We've now reached a point where the current AU overran or - // fitted exactly. We need to distinguish the latter case - // so we can record whether the next packet starts with an - // existing AU or not - info we need to decide what PTS/DTS - // info to write at the start of the next packet. - - if (au_unsent > bytes_muxed) { - - bufmodel.Queued (bytes_muxed, decode_time); - au_unsent -= bytes_muxed; - new_au_next_sec = false; - } else // if (au_unsent == bytes_muxed) - { - bufmodel.Queued (bytes_muxed, decode_time); - if (!NextAU ()) - return; - new_au_next_sec = true; - } - -} - -bool -ElementaryStream::MuxPossible (clockticks currentSCR) -{ - return (!RunOutComplete () && bufmodel.Space () > max_packet_data); -} - - -void -ElementaryStream::UpdateBufferMinMax () -{ - buffer_min = buffer_min < (int) bufmodel.Space ()? buffer_min : bufmodel.Space (); - buffer_max = buffer_max > (int) bufmodel.Space ()? buffer_max : bufmodel.Space (); -} - - - -void -ElementaryStream::AllDemuxed () -{ - bufmodel.Flushed (); -} - -void -ElementaryStream::DemuxedTo (clockticks SCR) -{ - bufmodel.Cleaned (SCR); -} - -bool -ElementaryStream::MuxCompleted () -{ - return au_unsent == 0; -} - -void -ElementaryStream::SetSyncOffset (clockticks sync_offset) -{ - timestamp_delay = sync_offset; -} - -Aunit * -ElementaryStream::next () -{ - Aunit *res; - - while (AUBufferNeedsRefill ()) { - FillAUbuffer (FRAME_CHUNK); - } - res = aunits.next (); - return res; -} - - - - -/* - * Local variables: - * c-file-style: "stroustrup" - * tab-width: 4 - * indent-tabs-mode: nil - * End: - */ -- cgit v1.2.1