<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.multimedia.cx/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Josh</id>
	<title>MultimediaWiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.multimedia.cx/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Josh"/>
	<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php/Special:Contributions/Josh"/>
	<updated>2026-04-10T09:34:53Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.5</generator>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=Sorenson_Video_3&amp;diff=13034</id>
		<title>Sorenson Video 3</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=Sorenson_Video_3&amp;diff=13034"/>
		<updated>2010-10-03T18:24:25Z</updated>

		<summary type="html">&lt;p&gt;Josh: /* Packetization */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* FOURCCs: SVQ3&lt;br /&gt;
* Company: [[Sorenson Media]]&lt;br /&gt;
* Samples: [http://samples.mplayerhq.hu/V-codecs/SVQ3/ http://samples.mplayerhq.hu/V-codecs/SVQ3/]&lt;br /&gt;
&lt;br /&gt;
Video codec apparently based on an early H.264 draft.&lt;br /&gt;
&lt;br /&gt;
== Decoding Process ==&lt;br /&gt;
This codec extensively uses [[Golomb]] coding.&lt;br /&gt;
&lt;br /&gt;
=== Slice Header ===&lt;br /&gt;
'''TODO'''&lt;br /&gt;
&lt;br /&gt;
=== Macroblock layer ===&lt;br /&gt;
Each macroblock starts with [[Golomb]] code signalling MB type:&lt;br /&gt;
* 0 - skip block&lt;br /&gt;
* 1-7 - inter 16x16 blocks, type specifies prediction direction&lt;br /&gt;
* 8 and 33 - intra 4x4 block (type 33 means that there are no coefficients for this block)&lt;br /&gt;
* 9-32 - intra 16x16 blocks, type is used to set prediction direction and coded block pattern&lt;br /&gt;
In any case coefficients are stored in 4x4 (sub)blocks.&lt;br /&gt;
&lt;br /&gt;
Dezigzag pattern (from [[H.264]]):&lt;br /&gt;
&lt;br /&gt;
  o--&amp;gt;o--&amp;gt;o   o&lt;br /&gt;
          |  /|&lt;br /&gt;
  o   o   o / o&lt;br /&gt;
  | / |   |/  |&lt;br /&gt;
  o   o   o   o&lt;br /&gt;
    /&lt;br /&gt;
  o--&amp;gt;o--&amp;gt;o--&amp;gt;o&lt;br /&gt;
&lt;br /&gt;
=== Coefficient decoding ===&lt;br /&gt;
Each coefficient is stored as [[Golomb]] codeword, last bit is coefficient sign, code = 0 means end of nonzero coefficients.&lt;br /&gt;
&lt;br /&gt;
Codes for block type 3:&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; style=&amp;quot;border-collapse: collapse; border-style: dashed; border-color: #2f6fab;&amp;quot;&lt;br /&gt;
|- bgcolor=&amp;quot;#f0f0f0&amp;quot; |&lt;br /&gt;
! code !! run !! value&lt;br /&gt;
|-&lt;br /&gt;
| 0-2 &lt;br /&gt;
| 0&lt;br /&gt;
| '''code'''&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| 1 &lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| 4-...&lt;br /&gt;
| '''code''' &amp;amp; 0x3&lt;br /&gt;
| (('''code''' + 9) &amp;gt;&amp;gt; 2) - '''run'''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Codes for intra block types:&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; style=&amp;quot;border-collapse: collapse; border-style: dashed; border-color: #2f6fab;&amp;quot;&lt;br /&gt;
|- bgcolor=&amp;quot;#f0f0f0&amp;quot; |&lt;br /&gt;
! code !! run !! value&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 0 || 0&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 0 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 2 || 1 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 3 || 0 || 2&lt;br /&gt;
|-&lt;br /&gt;
| 4 || 2 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 5 || 0 || 3&lt;br /&gt;
|-&lt;br /&gt;
| 6 || 0 || 4&lt;br /&gt;
|-&lt;br /&gt;
| 7 || 0 || 5&lt;br /&gt;
|-&lt;br /&gt;
| 8 || 3 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 9 || 4 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 10 || 1 || 2&lt;br /&gt;
|-&lt;br /&gt;
| 11 || 1 || 3&lt;br /&gt;
|-&lt;br /&gt;
| 12 || 0 || 6&lt;br /&gt;
|-&lt;br /&gt;
| 13 || 0 || 7&lt;br /&gt;
|-&lt;br /&gt;
| 14 || 0 || 8&lt;br /&gt;
|-&lt;br /&gt;
| 15 || 0 || 9&lt;br /&gt;
|-&lt;br /&gt;
| 16-...&lt;br /&gt;
| '''code''' &amp;amp; 0x7&lt;br /&gt;
| ('''code''' &amp;gt;&amp;gt; 3) - intra_run['''run''']&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Codes for inter block types:&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; style=&amp;quot;border-collapse: collapse; border-style: dashed; border-color: #2f6fab;&amp;quot;&lt;br /&gt;
|- bgcolor=&amp;quot;#f0f0f0&amp;quot; |&lt;br /&gt;
! code !! run !! value&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 0 || 0&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 0 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 2 || 1 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 3 || 2 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 4 || 0 || 2&lt;br /&gt;
|-&lt;br /&gt;
| 5 || 3 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 6 || 4 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 7 || 5 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 8 || 0 || 3&lt;br /&gt;
|-&lt;br /&gt;
| 9 || 1 || 2&lt;br /&gt;
|-&lt;br /&gt;
| 10 || 2 || 2&lt;br /&gt;
|-&lt;br /&gt;
| 11 || 6 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 12 || 7 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 13 || 8 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 14 || 9 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 15 || 0 || 4&lt;br /&gt;
|-&lt;br /&gt;
| 16-... (inter)&lt;br /&gt;
| '''code''' &amp;amp; 0xF&lt;br /&gt;
| ('''code''' &amp;gt;&amp;gt; 4) - inter_run['''run''']&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Run correction values:&lt;br /&gt;
  intra_run = { 8, 2, 0, 0, 0, -1, -1, -1, [minus  ones] };&lt;br /&gt;
  inter_run = { 4, 2, 2, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, [zeroes] };&lt;br /&gt;
&lt;br /&gt;
=== Macroblock transform and dequantization ===&lt;br /&gt;
&lt;br /&gt;
Transform coefficients:&lt;br /&gt;
&lt;br /&gt;
  13  17   1   7&lt;br /&gt;
  13   7  -1 -17&lt;br /&gt;
  13  -7  -1  17&lt;br /&gt;
  13 -17   1  -7&lt;br /&gt;
&lt;br /&gt;
Dequantization is performed by multiplying every coefficient by the same value determined by quantizer.&lt;br /&gt;
In case if inter blocks first coefficient may be quantized slightly differently:&lt;br /&gt;
&lt;br /&gt;
For some intra blocks ('''TODO''': condition):&lt;br /&gt;
    dc = 169 * 1538 * block[0]&lt;br /&gt;
For chroma blocks (?):&lt;br /&gt;
    dc = (svq3_dequant_coeff[Q] * (block[0] &amp;gt;&amp;gt; 3)) &amp;gt;&amp;gt; 1;&lt;br /&gt;
&lt;br /&gt;
Quantizer table (from svq3.c)&lt;br /&gt;
&lt;br /&gt;
  static const uint32_t svq3_dequant_coeff[32] = {&lt;br /&gt;
    3881,  4351,  4890,  5481,  6154,  6914,  7761,  8718,&lt;br /&gt;
    9781, 10987, 12339, 13828, 15523, 17435, 19561, 21873,&lt;br /&gt;
   24552, 27656, 30847, 34870, 38807, 43747, 49103, 54683,&lt;br /&gt;
   61694, 68745, 77615, 89113,100253,109366,126635,141533&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
Dequantization formula (dc=0 if not defined otherwise):&lt;br /&gt;
  out = (coeff * svq3_dequant_coeff[Q] + dc + 0x80000) &amp;gt;&amp;gt; 20;&lt;br /&gt;
&lt;br /&gt;
== Packetization ==&lt;br /&gt;
The first byte of a SVQ3 RTP packet indicates the packet type(s). This is after the standard RTP headers.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; style=&amp;quot;border-collapse: collapse; border-style: dashed; border-color: #2f6fab;&amp;quot;&lt;br /&gt;
|- bgcolor=&amp;quot;#f0f0f0&amp;quot; |&lt;br /&gt;
! 1st byte value !! packet type&lt;br /&gt;
|-&lt;br /&gt;
| 0x40 || config&lt;br /&gt;
|-&lt;br /&gt;
| 0x20 || start&lt;br /&gt;
|-&lt;br /&gt;
| 0x10 || end&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note that a packet may have more than one type. Config packets are in practice transmitted individually since they do not contain additional video data beyond extradata.&lt;br /&gt;
&lt;br /&gt;
The second byte of a SVQ3 RTP packet is ignored. This is likely reserved for future use.&lt;br /&gt;
&lt;br /&gt;
All subsequent bytes are payload data.&lt;br /&gt;
&lt;br /&gt;
SVQ3 does not make use of SDP FMTP attributes to carry codec-specific extradata; rather, this is carried within the RTP itself in config packets. Also, SVQ3 decoders expect extradata to be prefixed with the marker bytes &amp;quot;SEQH&amp;quot;, followed by another 4 bytes indicating the length of the extradata. Neither are provided by the payload, and must be inserted by the depacketizer prior to decoding. The rest of the payload data is standard SVQ3 extradata. (todo: explain 'standard svq3 extradata'?)&lt;br /&gt;
&lt;br /&gt;
Start packets come with a new RTP timestamp, and config packets may be periodically re-transmitted before a keyframe.&lt;br /&gt;
&lt;br /&gt;
End packets simply indicate that the payload data constitutes the remainder of a SVQ3 frame.&lt;br /&gt;
&lt;br /&gt;
[[Category:Video Codecs]]&lt;/div&gt;</summary>
		<author><name>Josh</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=Snow&amp;diff=12983</id>
		<title>Snow</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=Snow&amp;diff=12983"/>
		<updated>2010-09-11T23:09:55Z</updated>

		<summary type="html">&lt;p&gt;Josh: Update link to technical description&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* FourCC: SNOW&lt;br /&gt;
* Website: http://ffmpeg.org/&lt;br /&gt;
* Samples: [http://samples.mplayerhq.hu/V-codecs/SNOW/ http://samples.mplayerhq.hu/V-codecs/SNOW/]&lt;br /&gt;
* incomplete Technical Description: http://git.ffmpeg.org/?p=ffmpeg;a=blob_plain;f=doc/snow.txt&lt;br /&gt;
&lt;br /&gt;
Snow is a lossy and lossless video codec, (originated in the [[FFmpeg]] project). Snow features wavelet transform, overlapping block-based motion-compensation, and entropy coding that is not based on Huffman coding. It shares with [[Dirac]] the choice of wavelets but it is quite simpler and with less optional features. At the present the ffmpeg implementation of Snow is partially optimized for x86, AMD64 and PPC and is only suited for high-end systems.&lt;br /&gt;
&lt;br /&gt;
Snow has not reached version 1.0 and thus is in an experimental state as of August 2008. There are some [[FFmpeg_Summer_Of_Code_2008#Snow_Job|tasks left]] for a final 1.0 version.&lt;br /&gt;
&lt;br /&gt;
[[Category:Video Codecs]]&lt;br /&gt;
[[Category:Wavelet Video Codecs]]&lt;/div&gt;</summary>
		<author><name>Josh</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=Improve_RTSP/RTP_layer&amp;diff=12806</id>
		<title>Improve RTSP/RTP layer</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=Improve_RTSP/RTP_layer&amp;diff=12806"/>
		<updated>2010-07-08T08:48:10Z</updated>

		<summary type="html">&lt;p&gt;Josh: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Roadmap/checklist for Josh Allmann's Summer of Code Project:&lt;br /&gt;
&lt;br /&gt;
* Primary goal: improve the receiver compatibility&lt;br /&gt;
** Add support for more widespread formats ([list will follow check gst live555 and feng])&lt;br /&gt;
*** X-Qt/quicktime depacketizer (see [http://www.gnome.org/~rbultje/ffmpeg-patchset/ X-QT patch])&lt;br /&gt;
*** SVQ3 [http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/2009-July/073511.html] and QDM2 [http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/2009-August/073826.html] depacketizers&lt;br /&gt;
****&amp;lt;font color=&amp;quot;#00CC00&amp;quot;&amp;gt;SVQ3 patch committed&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#FFFF00&amp;quot;&amp;gt;QDM2 in progress&amp;lt;/font&amp;gt;&lt;br /&gt;
*** VP8 (see https://groups.google.com/a/webmproject.org/group/webm-discuss/browse_thread/thread/550f946b0e22ead2# )&lt;br /&gt;
** support Quicktime http tunnel mode&lt;br /&gt;
*** &amp;lt;font color=&amp;quot;#00CC00&amp;quot;&amp;gt;Initial implementation done and committed&amp;lt;/font&amp;gt;, not supported in the RTSP muxer yet, missing handling of the x-server-ip-address header&lt;br /&gt;
** untangle the AAC and mpeg4 format specific code from rtsp.c, make them proper dynamic payload handlers&lt;br /&gt;
*** &amp;lt;font color=&amp;quot;#00CC00&amp;quot;&amp;gt;Committed&amp;lt;/font&amp;gt;&lt;br /&gt;
** factorize out common code for parsing SDP (fmtp) lines, that is duplicated in parse_h264_sdp_line, amr_parse_sdp_line and xiph_parse_sdp_line&lt;br /&gt;
***&amp;lt;font color=&amp;quot;#00cc00&amp;quot;&amp;gt;Committed&amp;lt;/font&amp;gt;&lt;br /&gt;
** add RTP packetizers for codecs that we already have depacketizers for (Theora, Vorbis, SVQ3, QDM2, any other? - VP8, in parallel with the depacketizer for that)&lt;br /&gt;
** Real RTSP-HTTP, with port knocking&lt;br /&gt;
** support RTCP/Bye as end-of-file (see [[Small_FFmpeg_Tasks#Make_the_rtp_demuxer_support_rtcp_BYE_packets|small task]])&lt;br /&gt;
* Secondary goal: improve application integration&lt;br /&gt;
** Provide an API to expose the rtcp layer (and the equivalent in RDT dialect)&lt;br /&gt;
** Try to support subtitle streams (either as rtcp-xr or application/text stream)&lt;br /&gt;
** Make VideoLanClient, MPlayer or Xine use FFmpeg RTSP&lt;br /&gt;
*** &amp;lt;font color=&amp;quot;#FFFF00&amp;quot;&amp;gt;Patch submitted to VLC, awaiting review&amp;lt;/font&amp;gt;&lt;br /&gt;
** Implement protocol variations (e.g. DCCP or improve SCTP)&lt;br /&gt;
** Untangle MPEG2-TS/RTP from rtpdec into a dynamic payload handler. Write a packetizer first, unless we find such a server to test against.&lt;br /&gt;
** Reduce ffrtsp startup time&lt;br /&gt;
** Small Xiph RTP optimization: avoid the extra memcpy to packet; instead, hook av_init_packet up to url_close_dyn_buf&lt;br /&gt;
&lt;br /&gt;
''Mentor: Luca Barbato, Martin Storsjö, Ronald S. Bultje''&lt;/div&gt;</summary>
		<author><name>Josh</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=Sorenson_Video_3&amp;diff=12764</id>
		<title>Sorenson Video 3</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=Sorenson_Video_3&amp;diff=12764"/>
		<updated>2010-07-01T09:29:20Z</updated>

		<summary type="html">&lt;p&gt;Josh: /* Packetization */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* FOURCCs: SVQ3&lt;br /&gt;
* Company: [[Sorenson Media]]&lt;br /&gt;
* Samples: [http://samples.mplayerhq.hu/V-codecs/SVQ3/ http://samples.mplayerhq.hu/V-codecs/SVQ3/]&lt;br /&gt;
&lt;br /&gt;
Video codec apparently based on an early H.264 draft.&lt;br /&gt;
&lt;br /&gt;
== Decoding Process ==&lt;br /&gt;
This codec extensively uses [[Golomb]] coding.&lt;br /&gt;
&lt;br /&gt;
=== Slice Header ===&lt;br /&gt;
'''TODO'''&lt;br /&gt;
&lt;br /&gt;
=== Macroblock layer ===&lt;br /&gt;
Each macroblock starts with [[Golomb]] code signalling MB type:&lt;br /&gt;
* 0 - skip block&lt;br /&gt;
* 1-7 - inter 16x16 blocks, type specifies prediction direction&lt;br /&gt;
* 8 and 33 - intra 4x4 block (type 33 means that there are no coefficients for this block)&lt;br /&gt;
* 9-32 - intra 16x16 blocks, type is used to set prediction direction and coded block pattern&lt;br /&gt;
In any case coefficients are stored in 4x4 (sub)blocks.&lt;br /&gt;
&lt;br /&gt;
Dezigzag pattern (from [[H.264]]):&lt;br /&gt;
&lt;br /&gt;
  o--&amp;gt;o--&amp;gt;o   o&lt;br /&gt;
          |  /|&lt;br /&gt;
  o   o   o / o&lt;br /&gt;
  | / |   |/  |&lt;br /&gt;
  o   o   o   o&lt;br /&gt;
    /&lt;br /&gt;
  o--&amp;gt;o--&amp;gt;o--&amp;gt;o&lt;br /&gt;
&lt;br /&gt;
=== Coefficient decoding ===&lt;br /&gt;
Each coefficient is stored as [[Golomb]] codeword, last bit is coefficient sign, code = 0 means end of nonzero coefficients.&lt;br /&gt;
&lt;br /&gt;
Codes for block type 3:&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; style=&amp;quot;border-collapse: collapse; border-style: dashed; border-color: #2f6fab;&amp;quot;&lt;br /&gt;
|- bgcolor=&amp;quot;#f0f0f0&amp;quot; |&lt;br /&gt;
! code !! run !! value&lt;br /&gt;
|-&lt;br /&gt;
| 0-2 &lt;br /&gt;
| 0&lt;br /&gt;
| '''code'''&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| 1 &lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| 4-...&lt;br /&gt;
| '''code''' &amp;amp; 0x3&lt;br /&gt;
| (('''code''' + 9) &amp;gt;&amp;gt; 2) - '''run'''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Codes for intra block types:&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; style=&amp;quot;border-collapse: collapse; border-style: dashed; border-color: #2f6fab;&amp;quot;&lt;br /&gt;
|- bgcolor=&amp;quot;#f0f0f0&amp;quot; |&lt;br /&gt;
! code !! run !! value&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 0 || 0&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 0 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 2 || 1 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 3 || 0 || 2&lt;br /&gt;
|-&lt;br /&gt;
| 4 || 2 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 5 || 0 || 3&lt;br /&gt;
|-&lt;br /&gt;
| 6 || 0 || 4&lt;br /&gt;
|-&lt;br /&gt;
| 7 || 0 || 5&lt;br /&gt;
|-&lt;br /&gt;
| 8 || 3 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 9 || 4 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 10 || 1 || 2&lt;br /&gt;
|-&lt;br /&gt;
| 11 || 1 || 3&lt;br /&gt;
|-&lt;br /&gt;
| 12 || 0 || 6&lt;br /&gt;
|-&lt;br /&gt;
| 13 || 0 || 7&lt;br /&gt;
|-&lt;br /&gt;
| 14 || 0 || 8&lt;br /&gt;
|-&lt;br /&gt;
| 15 || 0 || 9&lt;br /&gt;
|-&lt;br /&gt;
| 16-...&lt;br /&gt;
| '''code''' &amp;amp; 0x7&lt;br /&gt;
| ('''code''' &amp;gt;&amp;gt; 3) - intra_run['''run''']&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Codes for inter block types:&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; style=&amp;quot;border-collapse: collapse; border-style: dashed; border-color: #2f6fab;&amp;quot;&lt;br /&gt;
|- bgcolor=&amp;quot;#f0f0f0&amp;quot; |&lt;br /&gt;
! code !! run !! value&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 0 || 0&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 0 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 2 || 1 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 3 || 2 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 4 || 0 || 2&lt;br /&gt;
|-&lt;br /&gt;
| 5 || 3 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 6 || 4 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 7 || 5 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 8 || 0 || 3&lt;br /&gt;
|-&lt;br /&gt;
| 9 || 1 || 2&lt;br /&gt;
|-&lt;br /&gt;
| 10 || 2 || 2&lt;br /&gt;
|-&lt;br /&gt;
| 11 || 6 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 12 || 7 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 13 || 8 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 14 || 9 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 15 || 0 || 4&lt;br /&gt;
|-&lt;br /&gt;
| 16-... (inter)&lt;br /&gt;
| '''code''' &amp;amp; 0xF&lt;br /&gt;
| ('''code''' &amp;gt;&amp;gt; 4) - inter_run['''run''']&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Run correction values:&lt;br /&gt;
  intra_run = { 8, 2, 0, 0, 0, -1, -1, -1, [minus  ones] };&lt;br /&gt;
  inter_run = { 4, 2, 2, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, [zeroes] };&lt;br /&gt;
&lt;br /&gt;
=== Macroblock transform and dequantization ===&lt;br /&gt;
&lt;br /&gt;
Transform coefficients:&lt;br /&gt;
&lt;br /&gt;
  13  17   1   7&lt;br /&gt;
  13   7  -1 -17&lt;br /&gt;
  13  -7  -1  17&lt;br /&gt;
  13 -17   1  -7&lt;br /&gt;
&lt;br /&gt;
Dequantization is performed by multiplying every coefficient by the same value determined by quantizer.&lt;br /&gt;
In case if inter blocks first coefficient may be quantized slightly differently:&lt;br /&gt;
&lt;br /&gt;
For some intra blocks ('''TODO''': condition):&lt;br /&gt;
    dc = 169 * 1538 * block[0]&lt;br /&gt;
For chroma blocks (?):&lt;br /&gt;
    dc = (svq3_dequant_coeff[Q] * (block[0] &amp;gt;&amp;gt; 3)) &amp;gt;&amp;gt; 1;&lt;br /&gt;
&lt;br /&gt;
Quantizer table (from svq3.c)&lt;br /&gt;
&lt;br /&gt;
  static const uint32_t svq3_dequant_coeff[32] = {&lt;br /&gt;
    3881,  4351,  4890,  5481,  6154,  6914,  7761,  8718,&lt;br /&gt;
    9781, 10987, 12339, 13828, 15523, 17435, 19561, 21873,&lt;br /&gt;
   24552, 27656, 30847, 34870, 38807, 43747, 49103, 54683,&lt;br /&gt;
   61694, 68745, 77615, 89113,100253,109366,126635,141533&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
Dequantization formula (dc=0 if not defined otherwise):&lt;br /&gt;
  out = (coeff * svq3_dequant_coeff[Q] + dc + 0x80000) &amp;gt;&amp;gt; 20;&lt;br /&gt;
&lt;br /&gt;
== Packetization ==&lt;br /&gt;
The first byte of a SVQ3 RTP packet indicates the packet type(s). This is after the standard RTP headers.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; style=&amp;quot;border-collapse: collapse; border-style: dashed; border-color: #2f6fab;&amp;quot;&lt;br /&gt;
|- bgcolor=&amp;quot;#f0f0f0&amp;quot; |&lt;br /&gt;
! 1st byte value !! packet type&lt;br /&gt;
|-&lt;br /&gt;
| 0x40 || config&lt;br /&gt;
|-&lt;br /&gt;
| 0x20 || start&lt;br /&gt;
|-&lt;br /&gt;
| 0x10 || end&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note that a packet may have more than one type. Config packets are in practice transmitted individually since they do not contain additional video data beyond extradata.&lt;br /&gt;
&lt;br /&gt;
The second byte of a SVQ3 RTP packet is ignored. This is likely reserved for future use.&lt;br /&gt;
&lt;br /&gt;
All subsequent bytes are payload data.&lt;br /&gt;
&lt;br /&gt;
SVQ3 does not make use of SDP FMTP attributes to carry codec-specific extradata; rather, this is carried within the RTP itself in config packets. Also, SVQ3 decoders expect extradata to be prefixed with the marker bytes &amp;quot;SEQH&amp;quot;, followed by another 4 bytes indicating the length of the extradata. Neither are provided by the payload, and must be inserted by the depacketizer prior to decoding. The rest of the payload data is standard SVQ3 extradata. (todo: explain 'standard svq3 extradata'?)&lt;br /&gt;
&lt;br /&gt;
Start packets come with a new RTP timestamp, and the RTP marker bit indicates whether the payload data is a keyframe. Config packets may be periodically re-transmitted before a keyframe.&lt;br /&gt;
&lt;br /&gt;
End packets simply indicate that the payload data constitutes the remainder of a SVQ3 frame.&lt;br /&gt;
&lt;br /&gt;
[[Category:Video Codecs]]&lt;/div&gt;</summary>
		<author><name>Josh</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=Sorenson_Video_3&amp;diff=12763</id>
		<title>Sorenson Video 3</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=Sorenson_Video_3&amp;diff=12763"/>
		<updated>2010-07-01T07:53:26Z</updated>

		<summary type="html">&lt;p&gt;Josh: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* FOURCCs: SVQ3&lt;br /&gt;
* Company: [[Sorenson Media]]&lt;br /&gt;
* Samples: [http://samples.mplayerhq.hu/V-codecs/SVQ3/ http://samples.mplayerhq.hu/V-codecs/SVQ3/]&lt;br /&gt;
&lt;br /&gt;
Video codec apparently based on an early H.264 draft.&lt;br /&gt;
&lt;br /&gt;
== Decoding Process ==&lt;br /&gt;
This codec extensively uses [[Golomb]] coding.&lt;br /&gt;
&lt;br /&gt;
=== Slice Header ===&lt;br /&gt;
'''TODO'''&lt;br /&gt;
&lt;br /&gt;
=== Macroblock layer ===&lt;br /&gt;
Each macroblock starts with [[Golomb]] code signalling MB type:&lt;br /&gt;
* 0 - skip block&lt;br /&gt;
* 1-7 - inter 16x16 blocks, type specifies prediction direction&lt;br /&gt;
* 8 and 33 - intra 4x4 block (type 33 means that there are no coefficients for this block)&lt;br /&gt;
* 9-32 - intra 16x16 blocks, type is used to set prediction direction and coded block pattern&lt;br /&gt;
In any case coefficients are stored in 4x4 (sub)blocks.&lt;br /&gt;
&lt;br /&gt;
Dezigzag pattern (from [[H.264]]):&lt;br /&gt;
&lt;br /&gt;
  o--&amp;gt;o--&amp;gt;o   o&lt;br /&gt;
          |  /|&lt;br /&gt;
  o   o   o / o&lt;br /&gt;
  | / |   |/  |&lt;br /&gt;
  o   o   o   o&lt;br /&gt;
    /&lt;br /&gt;
  o--&amp;gt;o--&amp;gt;o--&amp;gt;o&lt;br /&gt;
&lt;br /&gt;
=== Coefficient decoding ===&lt;br /&gt;
Each coefficient is stored as [[Golomb]] codeword, last bit is coefficient sign, code = 0 means end of nonzero coefficients.&lt;br /&gt;
&lt;br /&gt;
Codes for block type 3:&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; style=&amp;quot;border-collapse: collapse; border-style: dashed; border-color: #2f6fab;&amp;quot;&lt;br /&gt;
|- bgcolor=&amp;quot;#f0f0f0&amp;quot; |&lt;br /&gt;
! code !! run !! value&lt;br /&gt;
|-&lt;br /&gt;
| 0-2 &lt;br /&gt;
| 0&lt;br /&gt;
| '''code'''&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| 1 &lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| 4-...&lt;br /&gt;
| '''code''' &amp;amp; 0x3&lt;br /&gt;
| (('''code''' + 9) &amp;gt;&amp;gt; 2) - '''run'''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Codes for intra block types:&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; style=&amp;quot;border-collapse: collapse; border-style: dashed; border-color: #2f6fab;&amp;quot;&lt;br /&gt;
|- bgcolor=&amp;quot;#f0f0f0&amp;quot; |&lt;br /&gt;
! code !! run !! value&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 0 || 0&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 0 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 2 || 1 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 3 || 0 || 2&lt;br /&gt;
|-&lt;br /&gt;
| 4 || 2 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 5 || 0 || 3&lt;br /&gt;
|-&lt;br /&gt;
| 6 || 0 || 4&lt;br /&gt;
|-&lt;br /&gt;
| 7 || 0 || 5&lt;br /&gt;
|-&lt;br /&gt;
| 8 || 3 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 9 || 4 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 10 || 1 || 2&lt;br /&gt;
|-&lt;br /&gt;
| 11 || 1 || 3&lt;br /&gt;
|-&lt;br /&gt;
| 12 || 0 || 6&lt;br /&gt;
|-&lt;br /&gt;
| 13 || 0 || 7&lt;br /&gt;
|-&lt;br /&gt;
| 14 || 0 || 8&lt;br /&gt;
|-&lt;br /&gt;
| 15 || 0 || 9&lt;br /&gt;
|-&lt;br /&gt;
| 16-...&lt;br /&gt;
| '''code''' &amp;amp; 0x7&lt;br /&gt;
| ('''code''' &amp;gt;&amp;gt; 3) - intra_run['''run''']&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Codes for inter block types:&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; style=&amp;quot;border-collapse: collapse; border-style: dashed; border-color: #2f6fab;&amp;quot;&lt;br /&gt;
|- bgcolor=&amp;quot;#f0f0f0&amp;quot; |&lt;br /&gt;
! code !! run !! value&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 0 || 0&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 0 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 2 || 1 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 3 || 2 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 4 || 0 || 2&lt;br /&gt;
|-&lt;br /&gt;
| 5 || 3 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 6 || 4 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 7 || 5 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 8 || 0 || 3&lt;br /&gt;
|-&lt;br /&gt;
| 9 || 1 || 2&lt;br /&gt;
|-&lt;br /&gt;
| 10 || 2 || 2&lt;br /&gt;
|-&lt;br /&gt;
| 11 || 6 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 12 || 7 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 13 || 8 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 14 || 9 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 15 || 0 || 4&lt;br /&gt;
|-&lt;br /&gt;
| 16-... (inter)&lt;br /&gt;
| '''code''' &amp;amp; 0xF&lt;br /&gt;
| ('''code''' &amp;gt;&amp;gt; 4) - inter_run['''run''']&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Run correction values:&lt;br /&gt;
  intra_run = { 8, 2, 0, 0, 0, -1, -1, -1, [minus  ones] };&lt;br /&gt;
  inter_run = { 4, 2, 2, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, [zeroes] };&lt;br /&gt;
&lt;br /&gt;
=== Macroblock transform and dequantization ===&lt;br /&gt;
&lt;br /&gt;
Transform coefficients:&lt;br /&gt;
&lt;br /&gt;
  13  17   1   7&lt;br /&gt;
  13   7  -1 -17&lt;br /&gt;
  13  -7  -1  17&lt;br /&gt;
  13 -17   1  -7&lt;br /&gt;
&lt;br /&gt;
Dequantization is performed by multiplying every coefficient by the same value determined by quantizer.&lt;br /&gt;
In case if inter blocks first coefficient may be quantized slightly differently:&lt;br /&gt;
&lt;br /&gt;
For some intra blocks ('''TODO''': condition):&lt;br /&gt;
    dc = 169 * 1538 * block[0]&lt;br /&gt;
For chroma blocks (?):&lt;br /&gt;
    dc = (svq3_dequant_coeff[Q] * (block[0] &amp;gt;&amp;gt; 3)) &amp;gt;&amp;gt; 1;&lt;br /&gt;
&lt;br /&gt;
Quantizer table (from svq3.c)&lt;br /&gt;
&lt;br /&gt;
  static const uint32_t svq3_dequant_coeff[32] = {&lt;br /&gt;
    3881,  4351,  4890,  5481,  6154,  6914,  7761,  8718,&lt;br /&gt;
    9781, 10987, 12339, 13828, 15523, 17435, 19561, 21873,&lt;br /&gt;
   24552, 27656, 30847, 34870, 38807, 43747, 49103, 54683,&lt;br /&gt;
   61694, 68745, 77615, 89113,100253,109366,126635,141533&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
Dequantization formula (dc=0 if not defined otherwise):&lt;br /&gt;
  out = (coeff * svq3_dequant_coeff[Q] + dc + 0x80000) &amp;gt;&amp;gt; 20;&lt;br /&gt;
&lt;br /&gt;
== Packetization ==&lt;br /&gt;
The first byte of a SVQ3 RTP packet indicates the packet type(s).&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; style=&amp;quot;border-collapse: collapse; border-style: dashed; border-color: #2f6fab;&amp;quot;&lt;br /&gt;
|- bgcolor=&amp;quot;#f0f0f0&amp;quot; |&lt;br /&gt;
! 1st byte value !! packet type&lt;br /&gt;
|-&lt;br /&gt;
| 0x40 || config&lt;br /&gt;
|-&lt;br /&gt;
| 0x20 || start&lt;br /&gt;
|-&lt;br /&gt;
| 0x10 || end&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note that a packet may have more than one type. Config packets are in practice transmitted individually since they do not contain additional video data beyond extradata.&lt;br /&gt;
&lt;br /&gt;
The second byte of a SVQ3 RTP packet is ignored. This is likely reserved for future use.&lt;br /&gt;
&lt;br /&gt;
All subsequent bytes are payload data.&lt;br /&gt;
&lt;br /&gt;
SVQ3 does not make use of SDP FMTP attributes to carry codec-specific extradata; rather, this is carried within the RTP itself in config packets. Also, SVQ3 decoders expect extradata to be prefixed with the marker bytes &amp;quot;SEQH&amp;quot;, followed by another 4 bytes indicating the length of the extradata. Neither are provided by the payload, and must be inserted by the depacketizer prior to decoding. The rest of the payload data is standard SVQ3 extradata. (todo: explain 'standard svq3 extradata'?)&lt;br /&gt;
&lt;br /&gt;
Start packets come with a new RTP timestamp, and the RTP marker bit indicates whether the payload data is a keyframe. Config packets may be periodically re-transmitted before a keyframe.&lt;br /&gt;
&lt;br /&gt;
End packets simply indicate that the payload data constitutes the remainder of a SVQ3 frame.&lt;br /&gt;
&lt;br /&gt;
[[Category:Video Codecs]]&lt;/div&gt;</summary>
		<author><name>Josh</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=Improve_RTSP/RTP_layer&amp;diff=12760</id>
		<title>Improve RTSP/RTP layer</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=Improve_RTSP/RTP_layer&amp;diff=12760"/>
		<updated>2010-06-30T08:04:48Z</updated>

		<summary type="html">&lt;p&gt;Josh: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Roadmap/checklist for Josh Allmann's Summer of Code Project:&lt;br /&gt;
&lt;br /&gt;
* Primary goal: improve the receiver compatibility&lt;br /&gt;
** Add support for more widespread formats ([list will follow check gst live555 and feng])&lt;br /&gt;
*** X-Qt/quicktime depacketizer (see [http://www.gnome.org/~rbultje/ffmpeg-patchset/ X-QT patch])&lt;br /&gt;
*** SVQ3 [http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/2009-July/073511.html] and QDM2 [http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/2009-August/073826.html] depacketizers&lt;br /&gt;
****&amp;lt;font color=&amp;quot;#FFFF00&amp;quot;&amp;gt;SVQ3 patch submitted, QDM2 in progress&amp;lt;/font&amp;gt;&lt;br /&gt;
*** VP8 (see https://groups.google.com/a/webmproject.org/group/webm-discuss/browse_thread/thread/550f946b0e22ead2# )&lt;br /&gt;
** support Quicktime http tunnel mode&lt;br /&gt;
*** &amp;lt;font color=&amp;quot;#00CC00&amp;quot;&amp;gt;Initial implementation done and committed&amp;lt;/font&amp;gt;, not supported in the RTSP muxer yet, missing handling of the x-server-ip-address header&lt;br /&gt;
** untangle the AAC and mpeg4 format specific code from rtsp.c, make them proper dynamic payload handlers&lt;br /&gt;
*** &amp;lt;font color=&amp;quot;#00CC00&amp;quot;&amp;gt;Committed&amp;lt;/font&amp;gt;&lt;br /&gt;
** factorize out common code for parsing SDP (fmtp) lines, that is duplicated in parse_h264_sdp_line, amr_parse_sdp_line and xiph_parse_sdp_line&lt;br /&gt;
***&amp;lt;font color=&amp;quot;#00cc00&amp;quot;&amp;gt;Committed&amp;lt;/font&amp;gt;&lt;br /&gt;
** add RTP packetizers for codecs that we already have depacketizers for (Theora, Vorbis, any other? - VP8, in parallel with the depacketizer for that)&lt;br /&gt;
** Real RTSP-HTTP, with port knocking&lt;br /&gt;
** support RTCP/Bye as end-of-file (see [[Small_FFmpeg_Tasks#Make_the_rtp_demuxer_support_rtcp_BYE_packets|small task]])&lt;br /&gt;
* Secondary goal: improve application integration&lt;br /&gt;
** Provide an API to expose the rtcp layer (and the equivalent in RDT dialect)&lt;br /&gt;
** Try to support subtitle streams (either as rtcp-xr or application/text stream)&lt;br /&gt;
** Make VideoLanClient, MPlayer or Xine use FFmpeg RTSP&lt;br /&gt;
*** &amp;lt;font color=&amp;quot;#FFFF00&amp;quot;&amp;gt;Patch submitted to VLC, awaiting review&amp;lt;/font&amp;gt;&lt;br /&gt;
** Implement protocol variations (e.g. DCCP or improve SCTP)&lt;br /&gt;
** Untangle MPEG2-TS/RTP from rtpdec into a dynamic payload handler. Write a packetizer first, unless we find such a server to test against.&lt;br /&gt;
** Reduce ffrtsp startup time&lt;br /&gt;
** Small Xiph RTP optimization: avoid the extra memcpy to packet; instead, hook av_init_packet up to url_close_dyn_buf&lt;br /&gt;
&lt;br /&gt;
''Mentor: Luca Barbato, Martin Storsjö, Ronald S. Bultje''&lt;/div&gt;</summary>
		<author><name>Josh</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=Improve_RTSP/RTP_layer&amp;diff=12758</id>
		<title>Improve RTSP/RTP layer</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=Improve_RTSP/RTP_layer&amp;diff=12758"/>
		<updated>2010-06-29T16:55:50Z</updated>

		<summary type="html">&lt;p&gt;Josh: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Roadmap/checklist for Josh Allmann's Summer of Code Project:&lt;br /&gt;
&lt;br /&gt;
* Primary goal: improve the receiver compatibility&lt;br /&gt;
** Add support for more widespread formats ([list will follow check gst live555 and feng])&lt;br /&gt;
*** X-Qt/quicktime depacketizer (see [http://www.gnome.org/~rbultje/ffmpeg-patchset/ X-QT patch])&lt;br /&gt;
*** SVQ3 [http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/2009-July/073511.html] and QDM2 [http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/2009-August/073826.html] depacketizers&lt;br /&gt;
*** VP8 (see https://groups.google.com/a/webmproject.org/group/webm-discuss/browse_thread/thread/550f946b0e22ead2# )&lt;br /&gt;
** support Quicktime http tunnel mode&lt;br /&gt;
*** &amp;lt;font color=&amp;quot;#00CC00&amp;quot;&amp;gt;Initial implementation done and committed&amp;lt;/font&amp;gt;, not supported in the RTSP muxer yet, missing handling of the x-server-ip-address header&lt;br /&gt;
** untangle the AAC and mpeg4 format specific code from rtsp.c, make them proper dynamic payload handlers&lt;br /&gt;
*** &amp;lt;font color=&amp;quot;#00CC00&amp;quot;&amp;gt;Committed&amp;lt;/font&amp;gt;&lt;br /&gt;
** factorize out common code for parsing SDP (fmtp) lines, that is duplicated in parse_h264_sdp_line, amr_parse_sdp_line and xiph_parse_sdp_line&lt;br /&gt;
***&amp;lt;font color=&amp;quot;#00cc00&amp;quot;&amp;gt;Committed&amp;lt;/font&amp;gt;&lt;br /&gt;
** add RTP packetizers for codecs that we already have depacketizers for (Theora, Vorbis, any other? - VP8, in parallel with the depacketizer for that)&lt;br /&gt;
** Real RTSP-HTTP, with port knocking&lt;br /&gt;
** support RTCP/Bye as end-of-file (see [[Small_FFmpeg_Tasks#Make_the_rtp_demuxer_support_rtcp_BYE_packets|small task]])&lt;br /&gt;
* Secondary goal: improve application integration&lt;br /&gt;
** Provide an API to expose the rtcp layer (and the equivalent in RDT dialect)&lt;br /&gt;
** Try to support subtitle streams (either as rtcp-xr or application/text stream)&lt;br /&gt;
** Make VideoLanClient, MPlayer or Xine use FFmpeg RTSP&lt;br /&gt;
*** &amp;lt;font color=&amp;quot;#FFFF00&amp;quot;&amp;gt;Patch submitted to VLC, awaiting review&amp;lt;/font&amp;gt;&lt;br /&gt;
** Implement protocol variations (e.g. DCCP or improve SCTP)&lt;br /&gt;
** Untangle MPEG2-TS/RTP from rtpdec into a dynamic payload handler. Write a packetizer first, unless we find such a server to test against.&lt;br /&gt;
** Reduce ffrtsp startup time&lt;br /&gt;
** Small Xiph RTP optimization: avoid the extra memcpy to packet; instead, hook av_init_packet up to url_close_dyn_buf&lt;br /&gt;
&lt;br /&gt;
''Mentor: Luca Barbato, Martin Storsjö, Ronald S. Bultje''&lt;/div&gt;</summary>
		<author><name>Josh</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=Improve_RTSP/RTP_layer&amp;diff=12757</id>
		<title>Improve RTSP/RTP layer</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=Improve_RTSP/RTP_layer&amp;diff=12757"/>
		<updated>2010-06-29T16:42:20Z</updated>

		<summary type="html">&lt;p&gt;Josh: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Roadmap/checklist for Josh Allmann's Summer of Code Project:&lt;br /&gt;
&lt;br /&gt;
* Primary goal: improve the receiver compatibility&lt;br /&gt;
** Add support for more widespread formats ([list will follow check gst live555 and feng])&lt;br /&gt;
*** X-Qt/quicktime depacketizer (see [http://www.gnome.org/~rbultje/ffmpeg-patchset/ X-QT patch])&lt;br /&gt;
*** SVQ3 [http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/2009-July/073511.html] and QDM2 [http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/2009-August/073826.html] depacketizers&lt;br /&gt;
*** VP8 (see https://groups.google.com/a/webmproject.org/group/webm-discuss/browse_thread/thread/550f946b0e22ead2# )&lt;br /&gt;
** support Quicktime http tunnel mode&lt;br /&gt;
*** &amp;lt;font color=&amp;quot;#00CC00&amp;quot;&amp;gt;Initial implementation done and committed&amp;lt;/font&amp;gt;, not supported in the RTSP muxer yet, missing handling of the x-server-ip-address header&lt;br /&gt;
** untangle the AAC and mpeg4 format specific code from rtsp.c, make them proper dynamic payload handlers&lt;br /&gt;
*** &amp;lt;font color=&amp;quot;#00CC00&amp;quot;&amp;gt;Committed&amp;lt;/font&amp;gt;&lt;br /&gt;
** factorize out common code for parsing SDP (fmtp) lines, that is duplicated in parse_h264_sdp_line, amr_parse_sdp_line and xiph_parse_sdp_line&lt;br /&gt;
***&amp;lt;font color=&amp;quot;#00cc00&amp;quot;&amp;gt;Committed&amp;lt;/font&amp;gt;&lt;br /&gt;
** add RTP packetizers for codecs that we already have depacketizers for (Theora, Vorbis, any other? - VP8, in parallel with the depacketizer for that)&lt;br /&gt;
** Real RTSP-HTTP, with port knocking&lt;br /&gt;
** support RTCP/Bye as end-of-file (see [[Small_FFmpeg_Tasks#Make_the_rtp_demuxer_support_rtcp_BYE_packets|small task]])&lt;br /&gt;
* Secondary goal: improve application integration&lt;br /&gt;
** Provide an API to expose the rtcp layer (and the equivalent in RDT dialect)&lt;br /&gt;
** Try to support subtitle streams (either as rtcp-xr or application/text stream)&lt;br /&gt;
** Make VideoLanClient, MPlayer or Xine use FFmpeg RTSP&lt;br /&gt;
*** &amp;lt;font color=&amp;quot;#FFFF00&amp;quot;&amp;gt;Patch submitted to VLC, awaiting review&amp;lt;/font&amp;gt;&lt;br /&gt;
** Implement protocol variations (e.g. DCCP or improve SCTP)&lt;br /&gt;
** Untangle MPEG2-TS/RTP from rtpdec into a dynamic payload handler. Write a packetizer first, unless we find such a server to test against.&lt;br /&gt;
** Small Xiph RTP optimization: avoid the extra memcpy to packet; instead, hook av_init_packet up to url_close_dyn_buf&lt;br /&gt;
&lt;br /&gt;
''Mentor: Luca Barbato, Martin Storsjö, Ronald S. Bultje''&lt;/div&gt;</summary>
		<author><name>Josh</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=Improve_RTSP/RTP_layer&amp;diff=12756</id>
		<title>Improve RTSP/RTP layer</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=Improve_RTSP/RTP_layer&amp;diff=12756"/>
		<updated>2010-06-29T16:42:02Z</updated>

		<summary type="html">&lt;p&gt;Josh: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Roadmap/checklist for Josh Allmann's Summer of Code Project:&lt;br /&gt;
&lt;br /&gt;
* Primary goal: improve the receiver compatibility&lt;br /&gt;
** Add support for more widespread formats ([list will follow check gst live555 and feng])&lt;br /&gt;
*** X-Qt/quicktime depacketizer (see [http://www.gnome.org/~rbultje/ffmpeg-patchset/ X-QT patch])&lt;br /&gt;
*** SVQ3 [http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/2009-July/073511.html] and QDM2 [http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/2009-August/073826.html] depacketizers&lt;br /&gt;
*** VP8 (see https://groups.google.com/a/webmproject.org/group/webm-discuss/browse_thread/thread/550f946b0e22ead2# )&lt;br /&gt;
** support Quicktime http tunnel mode&lt;br /&gt;
*** &amp;lt;font color=&amp;quot;#00CC00&amp;quot;&amp;gt;Initial implementation done and committed&amp;lt;/font&amp;gt;, not supported in the RTSP muxer yet, missing handling of the x-server-ip-address header&lt;br /&gt;
** untangle the AAC and mpeg4 format specific code from rtsp.c, make them proper dynamic payload handlers&lt;br /&gt;
*** &amp;lt;font color=&amp;quot;#00CC00&amp;quot;&amp;gt;Committed&amp;lt;/font&amp;gt;&lt;br /&gt;
** factorize out common code for parsing SDP (fmtp) lines, that is duplicated in parse_h264_sdp_line, amr_parse_sdp_line and xiph_parse_sdp_line&lt;br /&gt;
***&amp;lt;font color=&amp;quot;#00cc00&amp;quot;&amp;gt;Committed&amp;lt;/font&amp;gt;&lt;br /&gt;
** add RTP packetizers for codecs that we already have depacketizers for (Theora, Vorbis, any other? - VP8, in parallel with the depacketizer for that)&lt;br /&gt;
** Real RTSP-HTTP, with port knocking&lt;br /&gt;
** support RTCP/Bye as end-of-file (see [[Small_FFmpeg_Tasks#Make_the_rtp_demuxer_support_rtcp_BYE_packets|small task]])&lt;br /&gt;
* Secondary goal: improve application integration&lt;br /&gt;
** Provide an API to expose the rtcp layer (and the equivalent in RDT dialect)&lt;br /&gt;
** Try to support subtitle streams (either as rtcp-xr or application/text stream)&lt;br /&gt;
** Make VideoLanClient, MPlayer or Xine use FFmpeg RTSP&lt;br /&gt;
*** &amp;lt;font color=&amp;quot;#FFFF00&amp;quot;&amp;gt;Patch submitted to VLC, awaiting review&amp;lt;/font&amp;gt;&lt;br /&gt;
** Implement protocol variations (e.g. DCCP or improve SCTP)&lt;br /&gt;
** Untangle MPEG2-TS/RTP from rtpdec into a dynamic payload handler. Write a packetizer first, unless we find such a server to test against.&lt;br /&gt;
** Small Theora RTP optimization: avoid the extra memcpy to packet; instead, hook av_init_packet up to url_close_dyn_buf&lt;br /&gt;
&lt;br /&gt;
''Mentor: Luca Barbato, Martin Storsjö, Ronald S. Bultje''&lt;/div&gt;</summary>
		<author><name>Josh</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=Improve_RTSP/RTP_layer&amp;diff=12755</id>
		<title>Improve RTSP/RTP layer</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=Improve_RTSP/RTP_layer&amp;diff=12755"/>
		<updated>2010-06-29T16:41:35Z</updated>

		<summary type="html">&lt;p&gt;Josh: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Roadmap/checklist for Josh Allmann's Summer of Code Project:&lt;br /&gt;
&lt;br /&gt;
* Primary goal: improve the receiver compatibility&lt;br /&gt;
** Add support for more widespread formats ([list will follow check gst live555 and feng])&lt;br /&gt;
*** X-Qt/quicktime depacketizer (see [http://www.gnome.org/~rbultje/ffmpeg-patchset/ X-QT patch])&lt;br /&gt;
*** SVQ3 [http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/2009-July/073511.html] and QDM2 [http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/2009-August/073826.html] depacketizers&lt;br /&gt;
*** VP8 (see https://groups.google.com/a/webmproject.org/group/webm-discuss/browse_thread/thread/550f946b0e22ead2# )&lt;br /&gt;
** support Quicktime http tunnel mode&lt;br /&gt;
*** &amp;lt;font color=&amp;quot;#00CC00&amp;quot;&amp;gt;Initial implementation done and committed&amp;lt;/font&amp;gt;, not supported in the RTSP muxer yet, missing handling of the x-server-ip-address header&lt;br /&gt;
** untangle the AAC and mpeg4 format specific code from rtsp.c, make them proper dynamic payload handlers&lt;br /&gt;
*** &amp;lt;font color=&amp;quot;#00CC00&amp;quot;&amp;gt;Committed&amp;lt;/font&amp;gt;&lt;br /&gt;
** factorize out common code for parsing SDP (fmtp) lines, that is duplicated in parse_h264_sdp_line, amr_parse_sdp_line and xiph_parse_sdp_line&lt;br /&gt;
***&amp;lt;font color=&amp;quot;#00cc00&amp;quot;&amp;gt;Committed&amp;lt;/font&amp;gt;&lt;br /&gt;
** add RTP packetizers for codecs that we already have depacketizers for (Theora, Vorbis, any other? - VP8, in parallel with the depacketizer for that)&lt;br /&gt;
** Real RTSP-HTTP, with port knocking&lt;br /&gt;
** support RTCP/Bye as end-of-file (see [[Small_FFmpeg_Tasks#Make_the_rtp_demuxer_support_rtcp_BYE_packets|small task]])&lt;br /&gt;
* Secondary goal: improve application integration&lt;br /&gt;
** Provide an API to expose the rtcp layer (and the equivalent in RDT dialect)&lt;br /&gt;
** Try to support subtitle streams (either as rtcp-xr or application/text stream)&lt;br /&gt;
** Make VideoLanClient, MPlayer or Xine use FFmpeg RTSP&lt;br /&gt;
*** &amp;lt;font color=&amp;quot;#FFFF00&amp;quot;&amp;gt;Patch submitted to VLC, awaiting review&amp;lt;/font&amp;gt;&lt;br /&gt;
** Implement protocol variations (e.g. DCCP or improve SCTP)&lt;br /&gt;
** Untangle MPEG2-TS/RTP from rtpdec into a dynamic payload handler. Write a packetizer first, unless we find such a server to test against.&lt;br /&gt;
*** Small Theora RTP optimization: avoid the extra memcpy to packet; instead, hook av_init_packet up to url_close_dyn_buf&lt;br /&gt;
&lt;br /&gt;
''Mentor: Luca Barbato, Martin Storsjö, Ronald S. Bultje''&lt;/div&gt;</summary>
		<author><name>Josh</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=Improve_RTSP/RTP_layer&amp;diff=12743</id>
		<title>Improve RTSP/RTP layer</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=Improve_RTSP/RTP_layer&amp;diff=12743"/>
		<updated>2010-06-26T05:26:19Z</updated>

		<summary type="html">&lt;p&gt;Josh: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Roadmap/checklist for Josh Allmann's Summer of Code Project:&lt;br /&gt;
&lt;br /&gt;
* Primary goal: improve the receiver compatibility&lt;br /&gt;
** Add support for more widespread formats ([list will follow check gst live555 and feng])&lt;br /&gt;
*** X-Qt/quicktime depacketizer (see [http://www.gnome.org/~rbultje/ffmpeg-patchset/ X-QT patch])&lt;br /&gt;
*** SVQ3 [http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/2009-July/073511.html] and QDM2 [http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/2009-August/073826.html] depacketizers&lt;br /&gt;
*** VP8 (see https://groups.google.com/a/webmproject.org/group/webm-discuss/browse_thread/thread/550f946b0e22ead2# )&lt;br /&gt;
** support Quicktime http tunnel mode&lt;br /&gt;
*** &amp;lt;font color=&amp;quot;#00CC00&amp;quot;&amp;gt;Initial implementation done and committed&amp;lt;/font&amp;gt;, not supported in the RTSP muxer yet, missing handling of the x-server-ip-address header&lt;br /&gt;
** untangle the AAC and mpeg4 format specific code from rtsp.c, make them proper dynamic payload handlers&lt;br /&gt;
*** &amp;lt;font color=&amp;quot;#00CC00&amp;quot;&amp;gt;Committed&amp;lt;/font&amp;gt;&lt;br /&gt;
** factorize out common code for parsing SDP (fmtp) lines, that is duplicated in parse_h264_sdp_line, amr_parse_sdp_line and xiph_parse_sdp_line&lt;br /&gt;
***&amp;lt;font color=&amp;quot;#FFFF00&amp;quot;&amp;gt;Patches submitted for H.264 and MPEG-4/AAC&amp;lt;/font&amp;gt;, Xiph and AMR left&lt;br /&gt;
** add RTP packetizers for codecs that we already have depacketizers for (Theora, Vorbis, any other?)&lt;br /&gt;
** support RTCP/Bye as end-of-file (see [[Small_FFmpeg_Tasks#Make_the_rtp_demuxer_support_rtcp_BYE_packets|small task]])&lt;br /&gt;
* Secondary goal: improve application integration&lt;br /&gt;
** Provide an API to expose the rtcp layer (and the equivalent in RDT dialect)&lt;br /&gt;
** Try to support subtitle streams (either as rtcp-xr or application/text stream)&lt;br /&gt;
** Make VideoLanClient, MPlayer or Xine use FFmpeg RTSP&lt;br /&gt;
*** &amp;lt;font color=&amp;quot;#FFFF00&amp;quot;&amp;gt;Patch submitted to VLC, awaiting review&amp;lt;/font&amp;gt;&lt;br /&gt;
** Implement protocol variations (e.g. DCCP or improve SCTP)&lt;br /&gt;
** Untangle MPEG2-TS/RTP from rtpdec into a dynamic payload handler. Write a packetizer first, unless we find such a server to test against.&lt;br /&gt;
&lt;br /&gt;
''Mentor: Luca Barbato, Martin Storsjö, Ronald S. Bultje''&lt;/div&gt;</summary>
		<author><name>Josh</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=Improve_RTSP/RTP_layer&amp;diff=12742</id>
		<title>Improve RTSP/RTP layer</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=Improve_RTSP/RTP_layer&amp;diff=12742"/>
		<updated>2010-06-25T22:37:22Z</updated>

		<summary type="html">&lt;p&gt;Josh: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Roadmap/checklist for Josh Allmann's Summer of Code Project:&lt;br /&gt;
&lt;br /&gt;
* Primary goal: improve the receiver compatibility&lt;br /&gt;
** Add support for more widespread formats ([list will follow check gst live555 and feng])&lt;br /&gt;
*** X-Qt/quicktime depacketizer (see [http://www.gnome.org/~rbultje/ffmpeg-patchset/ X-QT patch])&lt;br /&gt;
*** SVQ3 [http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/2009-July/073511.html] and QDM2 [http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/2009-August/073826.html] depacketizers&lt;br /&gt;
*** VP8 (see https://groups.google.com/a/webmproject.org/group/webm-discuss/browse_thread/thread/550f946b0e22ead2# )&lt;br /&gt;
** support Quicktime http tunnel mode&lt;br /&gt;
*** &amp;lt;font color=&amp;quot;#00CC00&amp;quot;&amp;gt;Initial implementation done and committed&amp;lt;/font&amp;gt;, not supported in the RTSP muxer yet, missing handling of the x-server-ip-address header&lt;br /&gt;
** untangle the AAC and mpeg4 format specific code from rtsp.c, make them proper dynamic payload handlers&lt;br /&gt;
*** &amp;lt;font color=&amp;quot;#00CC00&amp;quot;&amp;gt;Committed&amp;lt;/font&amp;gt;&lt;br /&gt;
** factorize out common code for parsing SDP (fmtp) lines, that is duplicated in parse_h264_sdp_line, amr_parse_sdp_line and xiph_parse_sdp_line&lt;br /&gt;
***&amp;lt;font color=&amp;quot;#FFFF00&amp;quot;&amp;gt;Patches submitted for H.264 and MPEG-4/AAC&amp;lt;/font&amp;gt;, Xiph and AMR left&lt;br /&gt;
** add RTP packetizers for codecs that we already have depacketizers for (Theora, Vorbis, any other?)&lt;br /&gt;
** support RTCP/Bye as end-of-file (see [[Small_FFmpeg_Tasks#Make_the_rtp_demuxer_support_rtcp_BYE_packets|small task]])&lt;br /&gt;
* Secondary goal: improve application integration&lt;br /&gt;
** Provide an API to expose the rtcp layer (and the equivalent in RDT dialect)&lt;br /&gt;
** Try to support subtitle streams (either as rtcp-xr or application/text stream)&lt;br /&gt;
** Make VideoLanClient, MPlayer or Xine use FFmpeg RTSP&lt;br /&gt;
*** &amp;lt;font color=&amp;quot;#FFFF00&amp;quot;&amp;gt;Patch submitted to VLC, awaiting review&amp;lt;/font&amp;gt;&lt;br /&gt;
** Implement protocol variations (e.g. DCCP or improve SCTP)&lt;br /&gt;
** Untangle MPEG2-TS/RTP from rtpdec into a dynamic payload handler&lt;br /&gt;
&lt;br /&gt;
''Mentor: Luca Barbato, Martin Storsjö, Ronald S. Bultje''&lt;/div&gt;</summary>
		<author><name>Josh</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=Improve_RTSP/RTP_layer&amp;diff=12726</id>
		<title>Improve RTSP/RTP layer</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=Improve_RTSP/RTP_layer&amp;diff=12726"/>
		<updated>2010-06-20T19:53:56Z</updated>

		<summary type="html">&lt;p&gt;Josh: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Roadmap/checklist for Josh Allmann's Summer of Code Project:&lt;br /&gt;
&lt;br /&gt;
* Primary goal: improve the receiver compatibility&lt;br /&gt;
** Add support for more widespread formats ([list will follow check gst live555 and feng])&lt;br /&gt;
*** X-Qt/quicktime depacketizer (see [http://www.gnome.org/~rbultje/ffmpeg-patchset/ X-QT patch])&lt;br /&gt;
*** SVQ3 [http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/2009-July/073511.html] and QDM2 [http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/2009-August/073826.html] depacketizers&lt;br /&gt;
*** VP8 (see https://groups.google.com/a/webmproject.org/group/webm-discuss/browse_thread/thread/550f946b0e22ead2# )&lt;br /&gt;
** support Quicktime http tunnel mode&lt;br /&gt;
*** &amp;lt;font color=&amp;quot;#00CC00&amp;quot;&amp;gt;Initial implementation done and committed&amp;lt;/font&amp;gt;, not supported in the RTSP muxer yet&lt;br /&gt;
** untangle the AAC and mpeg4 format specific code from rtsp.c, make them proper dynamic payload handlers&lt;br /&gt;
*** &amp;lt;font color=&amp;quot;#FFFF00&amp;quot;&amp;gt;Patch submitted, awaiting review&amp;lt;/font&amp;gt;&lt;br /&gt;
** add RTP packetizers for codecs that we already have depacketizers for (Theora, Vorbis, any other?)&lt;br /&gt;
** support RTCP/Bye as end-of-file (see [[Small_FFmpeg_Tasks#Make_the_rtp_demuxer_support_rtcp_BYE_packets|small task]])&lt;br /&gt;
* Secondary goal: improve application integration&lt;br /&gt;
** Provide an API to expose the rtcp layer (and the equivalent in RDT dialect)&lt;br /&gt;
** Try to support subtitle streams (either as rtcp-xr or application/text stream)&lt;br /&gt;
** Make VideoLanClient, MPlayer or Xine use FFmpeg RTSP&lt;br /&gt;
*** &amp;lt;font color=&amp;quot;#FFFF00&amp;quot;&amp;gt;Patch submitted to VLC, awaiting review&amp;lt;/font&amp;gt;&lt;br /&gt;
** Implement protocol variations (e.g. DCCP or improve SCTP)&lt;br /&gt;
&lt;br /&gt;
''Mentor: Luca Barbato, Martin Storsjö, Ronald S. Bultje''&lt;/div&gt;</summary>
		<author><name>Josh</name></author>
	</entry>
</feed>