summaryrefslogtreecommitdiff
path: root/libavcodec
diff options
context:
space:
mode:
authorJohan Bilien <jobi@via.ecp.fr>2005-02-02 18:14:59 +0000
committerMichael Niedermayer <michaelni@gmx.at>2005-02-02 18:14:59 +0000
commitebaa7e03154e4bec5cbeb7dc839980c67b64c436 (patch)
tree022e8217136b2e328e318c03c358e18eef05f5b6 /libavcodec
parentce4a29c066cddfc180979ed86396812f24337985 (diff)
rtp_callback: send number of mb patch by (Johan Bilien {jobi via.ecp fr)
Originally committed as revision 3926 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavcodec')
-rw-r--r--libavcodec/avcodec.h8
-rw-r--r--libavcodec/mpegvideo.c11
2 files changed, 12 insertions, 7 deletions
diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h
index 0b62582a65..85b94425f9 100644
--- a/libavcodec/avcodec.h
+++ b/libavcodec/avcodec.h
@@ -17,7 +17,7 @@ extern "C" {
#define FFMPEG_VERSION_INT 0x000409
#define FFMPEG_VERSION "0.4.9-pre1"
-#define LIBAVCODEC_BUILD 4739
+#define LIBAVCODEC_BUILD 4740
#define LIBAVCODEC_VERSION_INT FFMPEG_VERSION_INT
#define LIBAVCODEC_VERSION FFMPEG_VERSION
@@ -859,8 +859,10 @@ typedef struct AVCodecContext {
/* The RTP callcack: This function is called */
/* every time the encoder as a packet to send */
/* Depends on the encoder if the data starts */
- /* with a Start Code (it should) H.263 does */
- void (*rtp_callback)(struct AVCodecContext *avctx, void *data, int size, int packet_number);
+ /* with a Start Code (it should) H.263 does. */
+ /* mb_nb contains the number of macroblocks */
+ /* encoded in the RTP payload */
+ void (*rtp_callback)(struct AVCodecContext *avctx, void *data, int size, int mb_nb);
/* statistics, used for 2-pass encoding */
int mv_bits;
diff --git a/libavcodec/mpegvideo.c b/libavcodec/mpegvideo.c
index 45c9e566a0..bca63a1913 100644
--- a/libavcodec/mpegvideo.c
+++ b/libavcodec/mpegvideo.c
@@ -4724,9 +4724,11 @@ static int encode_thread(AVCodecContext *c, void *arg){
assert(pbBufPtr(&s->pb) == s->ptr_lastgob);
}
}
-
- if (s->avctx->rtp_callback)
- s->avctx->rtp_callback(s->avctx, s->ptr_lastgob, current_packet_size, 0);
+
+ if (s->avctx->rtp_callback){
+ int number_mb = (mb_y - s->resync_mb_y)*s->mb_width + mb_x - s->resync_mb_x;
+ s->avctx->rtp_callback(s->avctx, s->ptr_lastgob, current_packet_size, number_mb);
+ }
switch(s->codec_id){
case CODEC_ID_MPEG4:
@@ -5166,10 +5168,11 @@ static int encode_thread(AVCodecContext *c, void *arg){
/* Send the last GOB if RTP */
if (s->avctx->rtp_callback) {
+ int number_mb = (mb_y - s->resync_mb_y)*s->mb_width - s->resync_mb_x;
pdif = pbBufPtr(&s->pb) - s->ptr_lastgob;
/* Call the RTP callback to send the last GOB */
emms_c();
- s->avctx->rtp_callback(s->avctx, s->ptr_lastgob, pdif, 0);
+ s->avctx->rtp_callback(s->avctx, s->ptr_lastgob, pdif, number_mb);
}
return 0;