| 
									
										
										
										
											2009-08-03 23:22:46 +00:00
										 |  |  | /*
 | 
					
						
							|  |  |  |  * RV10 encoder | 
					
						
							|  |  |  |  * Copyright (c) 2000,2001 Fabrice Bellard | 
					
						
							|  |  |  |  * Copyright (c) 2002-2004 Michael Niedermayer | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * This file is part of FFmpeg. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * FFmpeg is free software; you can redistribute it and/or | 
					
						
							|  |  |  |  * modify it under the terms of the GNU Lesser General Public | 
					
						
							|  |  |  |  * License as published by the Free Software Foundation; either | 
					
						
							|  |  |  |  * version 2.1 of the License, or (at your option) any later version. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * FFmpeg 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 | 
					
						
							|  |  |  |  * Lesser General Public License for more details. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * You should have received a copy of the GNU Lesser General Public | 
					
						
							|  |  |  |  * License along with FFmpeg; if not, write to the Free Software | 
					
						
							|  |  |  |  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /**
 | 
					
						
							| 
									
										
										
										
											2010-04-20 14:45:34 +00:00
										 |  |  |  * @file | 
					
						
							| 
									
										
										
										
											2009-08-03 23:22:46 +00:00
										 |  |  |  * RV10 encoder | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #include "mpegvideo.h"
 | 
					
						
							|  |  |  | #include "put_bits.h"
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | void rv10_encode_picture_header(MpegEncContext *s, int picture_number) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     int full_frame= 0; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-10-17 10:10:42 +02:00
										 |  |  |     avpriv_align_put_bits(&s->pb); | 
					
						
							| 
									
										
										
										
											2009-08-03 23:22:46 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |     put_bits(&s->pb, 1, 1);     /* marker */ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-04-28 01:40:44 +02:00
										 |  |  |     put_bits(&s->pb, 1, (s->pict_type == AV_PICTURE_TYPE_P)); | 
					
						
							| 
									
										
										
										
											2009-08-03 23:22:46 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |     put_bits(&s->pb, 1, 0);     /* not PB frame */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     put_bits(&s->pb, 5, s->qscale); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-04-28 01:40:44 +02:00
										 |  |  |     if (s->pict_type == AV_PICTURE_TYPE_I) { | 
					
						
							| 
									
										
										
										
											2009-08-03 23:22:46 +00:00
										 |  |  |         /* specific MPEG like DC coding not used */ | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     /* if multiple packets per frame are sent, the position at which
 | 
					
						
							|  |  |  |        to display the macroblocks is coded here */ | 
					
						
							|  |  |  |     if(!full_frame){ | 
					
						
							|  |  |  |         put_bits(&s->pb, 6, 0); /* mb_x */ | 
					
						
							|  |  |  |         put_bits(&s->pb, 6, 0); /* mb_y */ | 
					
						
							|  |  |  |         put_bits(&s->pb, 12, s->mb_width * s->mb_height); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     put_bits(&s->pb, 3, 0);     /* ignored */ | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-01-25 21:40:11 +00:00
										 |  |  | AVCodec ff_rv10_encoder = { | 
					
						
							| 
									
										
										
										
											2011-07-17 12:54:31 +02:00
										 |  |  |     .name           = "rv10", | 
					
						
							|  |  |  |     .type           = AVMEDIA_TYPE_VIDEO, | 
					
						
							|  |  |  |     .id             = CODEC_ID_RV10, | 
					
						
							|  |  |  |     .priv_data_size = sizeof(MpegEncContext), | 
					
						
							|  |  |  |     .init           = MPV_encode_init, | 
					
						
							|  |  |  |     .encode         = MPV_encode_picture, | 
					
						
							|  |  |  |     .close          = MPV_encode_end, | 
					
						
							| 
									
										
										
										
											2009-09-06 16:09:21 +00:00
										 |  |  |     .pix_fmts= (const enum PixelFormat[]){PIX_FMT_YUV420P, PIX_FMT_NONE}, | 
					
						
							| 
									
										
										
										
											2009-08-03 23:22:46 +00:00
										 |  |  |     .long_name= NULL_IF_CONFIG_SMALL("RealVideo 1.0"), | 
					
						
							|  |  |  | }; |