mpegvideo: move the MpegEncContext fields used from arm asm to the beginning
authorAnton Khirnov <anton@khirnov.net>
Thu, 5 Dec 2013 20:14:40 +0000 (21:14 +0100)
committerAnton Khirnov <anton@khirnov.net>
Tue, 29 Apr 2014 12:49:42 +0000 (14:49 +0200)
This should reduce the frequency with which the offsets need to be
updated.

libavcodec/arm/asm-offsets.h
libavcodec/mpegvideo.h

index fdc33ce..0ea2f04 100644 (file)
 #define AVCODEC_ARM_ASM_OFFSETS_H
 
 /* MpegEncContext */
 #define AVCODEC_ARM_ASM_OFFSETS_H
 
 /* MpegEncContext */
-#define Y_DC_SCALE               0xa8
-#define C_DC_SCALE               0xac
-#define AC_PRED                  0xb0
-#define BLOCK_LAST_INDEX         0xb4
-#define H263_AIC                 0xe4
-#define INTER_SCANTAB_RASTER_END 0x12c
+#define Y_DC_SCALE               0x04
+#define C_DC_SCALE               0x08
+#define AC_PRED                  0x0c
+#define BLOCK_LAST_INDEX         0x10
+#define H263_AIC                 0x40
+#define INTER_SCANTAB_RASTER_END 0x88
 
 #endif /* AVCODEC_ARM_ASM_OFFSETS_H */
 
 #endif /* AVCODEC_ARM_ASM_OFFSETS_H */
index e1ee40f..a879187 100644 (file)
@@ -197,6 +197,21 @@ typedef struct MotionEstContext{
  */
 typedef struct MpegEncContext {
     AVClass *class;
  */
 typedef struct MpegEncContext {
     AVClass *class;
+
+    int y_dc_scale, c_dc_scale;
+    int ac_pred;
+    int block_last_index[12];  ///< last non zero coefficient in block
+    int h263_aic;              ///< Advanded INTRA Coding (AIC)
+
+    /* scantables */
+    ScanTable inter_scantable; ///< if inter == intra then intra should be used to reduce tha cache usage
+    ScanTable intra_scantable;
+    ScanTable intra_h_scantable;
+    ScanTable intra_v_scantable;
+
+    /* WARNING: changes above this line require updates to hardcoded
+     *          offsets used in asm. */
+
     struct AVCodecContext *avctx;
     /* the following parameters must be initialized before encoding */
     int width, height;///< picture size. must be a multiple of 16
     struct AVCodecContext *avctx;
     /* the following parameters must be initialized before encoding */
     int width, height;///< picture size. must be a multiple of 16
@@ -243,20 +258,6 @@ typedef struct MpegEncContext {
     Picture **input_picture;   ///< next pictures on display order for encoding
     Picture **reordered_input_picture; ///< pointer to the next pictures in codedorder for encoding
 
     Picture **input_picture;   ///< next pictures on display order for encoding
     Picture **reordered_input_picture; ///< pointer to the next pictures in codedorder for encoding
 
-    int y_dc_scale, c_dc_scale;
-    int ac_pred;
-    int block_last_index[12];  ///< last non zero coefficient in block
-    int h263_aic;              ///< Advanded INTRA Coding (AIC)
-
-    /* scantables */
-    ScanTable inter_scantable; ///< if inter == intra then intra should be used to reduce tha cache usage
-    ScanTable intra_scantable;
-    ScanTable intra_h_scantable;
-    ScanTable intra_v_scantable;
-
-    /* WARNING: changes above this line require updates to hardcoded
-     *          offsets used in asm. */
-
     int64_t user_specified_pts; ///< last non-zero pts from AVFrame which was passed into avcodec_encode_video2()
     /**
      * pts difference between the first and second input frame, used for
     int64_t user_specified_pts; ///< last non-zero pts from AVFrame which was passed into avcodec_encode_video2()
     /**
      * pts difference between the first and second input frame, used for