Re: [ot] MPEG1 Transcoding

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]



> Is it possible to transcode a high-bit-rate MPEG1 stream to a lower one
> without trying to completely uncompress it and recompress it?
>

Yes, if it is "I-frame-only" MPEG1, which is essentially JPEG: no "inter" /
predictive / P or B frames; each frame is independent of the others.  In that
case you can do the following, which BTW can also be done with JPEG images:

Do the Huffman decoding for each (macro)block, which gives you up to 64 (I)DCT
coefficients.  Multiply each by the "quantization factor" to get the original
coefficients, with some resolution lost on the lower bits.  The original
coefficients were divided by the quantization factor, which is where the the
lossiness of JPEG comes from (if the quantization factor were 1, it would be
lossless except for rounding errors due to the DCT being done in floating
point).

Now quantize the data by dividing by a larger quantization factor than the
original one, and Huffman encode the resulting coefficients, as well as the new
quantization factor.  Because you are dividing by a larger number, the
resulting numbers are smaller than the input values, so they encode in fewer
bits.  More important, more of the coefficients become zero (0), and JPEG/MPEG
handle those nicely by encoding each non-zero value as: <# of zeros before
this> | <this value>.  (It's more complex than this, and different in JPEG vs.
MPEG, but that's sort of how it works).

The problem is: it is the inter (P and B) frames that give MPEG superior
compression to (M)JPEG, and to correctly (I believe) transcode the P or B
frames you have to do full de/re-compression.  I believe the general stats are
that B frames are usually 2/3 of the frames but only take up 15-20% of the
total bits.

However, the approach would work for transcoding JPEG or MPEG, so it may be of
interest to somebody out there ...  The Independent JPEG Group code might even
have support for something like this.

Peter Kaczowka
Ucentric Systems LLC



Brian Ristuccia wrote:

> On Thu, Jan 11, 2001 at 09:19:47AM -0800, Jon Pennington wrote:
> > Is it possible to transcode a high-bit-rate MPEG1 stream to a lower one
> > without trying to completely uncompress it and recompress it?
> >
>
> Don't know.
>
> > Secondly, are the VCD (NTSC and PAL) standards so tight that you /must/
> > use a specific bitrate for a `legal' VCD image?
> >
>
> Standalone VCD players will barf on streams with a bitrate that is too high.
> Since they are equipped with only a 1x CDROM drive, they just can't read the
> data fast enough to play it.
>
> Almost every DVD player that also play VCD's can play VCD disks with much
> higher bitrates, usually at least double the standard bitrate. But there's
> no guarantees.
>
> --
> Brian Ristuccia
> brian@xxxxxxxxxxxxx
> bristucc@xxxxxxxxxx
>
> _______________________________________________
> Video4linux-list mailing list
> Video4linux-list@xxxxxxxxxx
> https://listman.redhat.com/mailman/listinfo/video4linux-list





[Index of Archives]     [Linux DVB]     [Video Disk Recorder]     [Asterisk]     [Photo]     [DCCP]     [Netdev]     [Xorg]     [Util Linux NG]     [Xfree86]     [Free Photo Albums]     [Fedora Users]     [Fedora Women]     [ALSA Users]     [ALSA Devel]     [Linux USB]

Powered by Linux