Backport fix for mpegvideo rtp, fixes Issue119, original fix from Dario Gallucci <dariodotgallucciatpolito.it> in feng
Originally committed as revision 10257 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
		
							parent
							
								
									55bf7fb613
								
							
						
					
					
						commit
						f6df400c0c
					
				@ -28,32 +28,39 @@ void ff_rtp_send_mpegvideo(AVFormatContext *s1, const uint8_t *buf1, int size)
 | 
				
			|||||||
    RTPDemuxContext *s = s1->priv_data;
 | 
					    RTPDemuxContext *s = s1->priv_data;
 | 
				
			||||||
    AVStream *st = s1->streams[0];
 | 
					    AVStream *st = s1->streams[0];
 | 
				
			||||||
    int len, h, max_packet_size;
 | 
					    int len, h, max_packet_size;
 | 
				
			||||||
 | 
					    int b=1, e=0;
 | 
				
			||||||
    uint8_t *q;
 | 
					    uint8_t *q;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    max_packet_size = s->max_payload_size;
 | 
					    max_packet_size = s->max_payload_size;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    while (size > 0) {
 | 
					    while (size > 0) {
 | 
				
			||||||
        /* XXX: more correct headers */
 | 
					        len = max_packet_size - 4;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if (len >= size) {
 | 
				
			||||||
 | 
					            len = size;
 | 
				
			||||||
 | 
					            e = 1;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        h = 0;
 | 
					        h = 0;
 | 
				
			||||||
        if (st->codec->sub_id == 2)
 | 
					        h |= b << 12;
 | 
				
			||||||
            h |= 1 << 26; /* mpeg 2 indicator */
 | 
					        h |= e << 11;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//        if (st->codec->sub_id == 2)
 | 
				
			||||||
 | 
					//            h |= 1 << 26; /* mpeg 2 indicator */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        q = s->buf;
 | 
					        q = s->buf;
 | 
				
			||||||
        *q++ = h >> 24;
 | 
					        *q++ = h >> 24;
 | 
				
			||||||
        *q++ = h >> 16;
 | 
					        *q++ = h >> 16;
 | 
				
			||||||
        *q++ = h >> 8;
 | 
					        *q++ = h >> 8;
 | 
				
			||||||
        *q++ = h;
 | 
					        *q++ = h;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (st->codec->sub_id == 2) {
 | 
					/*        if (st->codec->sub_id == 2) {
 | 
				
			||||||
            h = 0;
 | 
					            h = 0;
 | 
				
			||||||
            *q++ = h >> 24;
 | 
					            *q++ = h >> 24;
 | 
				
			||||||
            *q++ = h >> 16;
 | 
					            *q++ = h >> 16;
 | 
				
			||||||
            *q++ = h >> 8;
 | 
					            *q++ = h >> 8;
 | 
				
			||||||
            *q++ = h;
 | 
					            *q++ = h;
 | 
				
			||||||
        }
 | 
					        } */
 | 
				
			||||||
 | 
					 | 
				
			||||||
        len = max_packet_size - (q - s->buf);
 | 
					 | 
				
			||||||
        if (len > size)
 | 
					 | 
				
			||||||
            len = size;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        memcpy(q, buf1, len);
 | 
					        memcpy(q, buf1, len);
 | 
				
			||||||
        q += len;
 | 
					        q += len;
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user