[mythtv] [PATCH] ViaSlice QMatrix
Steven Cruysberghs
steven.cruysberghs at tiscali.be
Fri Jul 9 06:51:50 EDT 2004
Kenneth Aafløy schreef:
>Hi,
>
>I've looked at the QMatrix and the possibility of removing the extra viaslice
>matrixes in mpeg context, but it looks it will either come to this patch or a
>reordering of the default qmatrixes with ff_zigzag_direct, which will touch
>to much code.
>
>Kenneth
>
>
>------------------------------------------------------------------------
>
>Index: mpeg12.c
>===================================================================
>RCS file: /var/lib/mythcvs/mythtv/libs/libavcodec/mpeg12.c,v
>retrieving revision 1.51
>diff -u -r1.51 mpeg12.c
>--- mpeg12.c 21 May 2004 05:30:55 -0000 1.51
>+++ mpeg12.c 4 Jul 2004 17:33:12 -0000
>@@ -2104,6 +2104,7 @@
> for(i=0;i<64;i++) {
> v = get_bits(&s->gb, 8);
> j= s->dsp.idct_permutation[ ff_zigzag_direct[i] ];
>+ s->viaslice_intra_matrix[i] = v;
> s->intra_matrix[j] = v;
> s->chroma_intra_matrix[j] = v;
> }
>@@ -2112,6 +2113,7 @@
> for(i=0;i<64;i++) {
> v = get_bits(&s->gb, 8);
> j= s->dsp.idct_permutation[ ff_zigzag_direct[i] ];
>+ s->viaslice_inter_matrix[i] = v;
> s->inter_matrix[j] = v;
> s->chroma_inter_matrix[j] = v;
> }
>@@ -2584,6 +2586,7 @@
> return -1;
> }
> j = s->dsp.idct_permutation[ ff_zigzag_direct[i] ];
>+ s->viaslice_intra_matrix[i] = v;
> s->intra_matrix[j] = v;
> s->chroma_intra_matrix[j] = v;
> }
>@@ -2597,6 +2600,7 @@
> for(i=0;i<64;i++) {
> j = s->dsp.idct_permutation[i];
> v = ff_mpeg1_default_intra_matrix[i];
>+ s->viaslice_intra_matrix[i] = v;
> s->intra_matrix[j] = v;
> s->chroma_intra_matrix[j] = v;
> }
>@@ -2609,6 +2613,7 @@
> return -1;
> }
> j = s->dsp.idct_permutation[ ff_zigzag_direct[i] ];
>+ s->viaslice_inter_matrix[i] = v;
> s->inter_matrix[j] = v;
> s->chroma_inter_matrix[j] = v;
> }
>@@ -2622,6 +2627,7 @@
> for(i=0;i<64;i++) {
> int j= s->dsp.idct_permutation[i];
> v = ff_mpeg1_default_non_intra_matrix[i];
>+ s->viaslice_inter_matrix[i] = v;
> s->inter_matrix[j] = v;
> s->chroma_inter_matrix[j] = v;
> }
>@@ -2688,10 +2694,12 @@
> for(i=0;i<64;i++) {
> int j= s->dsp.idct_permutation[i];
> v = ff_mpeg1_default_intra_matrix[i];
>+ s->viaslice_intra_matrix[i] = v;
> s->intra_matrix[j] = v;
> s->chroma_intra_matrix[j] = v;
>
> v = ff_mpeg1_default_non_intra_matrix[i];
>+ s->viaslice_inter_matrix[i] = v;
> s->inter_matrix[j] = v;
> s->chroma_inter_matrix[j] = v;
> }
>Index: mpegvideo.h
>===================================================================
>RCS file: /var/lib/mythcvs/mythtv/libs/libavcodec/mpegvideo.h,v
>retrieving revision 1.49
>diff -u -r1.49 mpegvideo.h
>--- mpegvideo.h 21 May 2004 05:30:55 -0000 1.49
>+++ mpegvideo.h 4 Jul 2004 17:34:01 -0000
>@@ -454,6 +454,9 @@
> int *mb_index2xy; ///< mb_index -> mb_x + mb_y*mb_stride
>
> /** matrix transmitted in the bitstream */
>+ uint8_t viaslice_intra_matrix[64];
>+ uint8_t viaslice_inter_matrix[64];
>+
> uint16_t intra_matrix[64];
> uint16_t chroma_intra_matrix[64];
> uint16_t inter_matrix[64];
>Index: viaslice.c
>===================================================================
>RCS file: /var/lib/mythcvs/mythtv/libs/libavcodec/viaslice.c,v
>retrieving revision 1.10
>diff -u -r1.10 viaslice.c
>--- viaslice.c 25 Jun 2004 21:26:01 -0000 1.10
>+++ viaslice.c 4 Jul 2004 17:34:08 -0000
>@@ -23,34 +23,19 @@
>
> int i,j;
>
>- for (i=0, j=0; j < 16; i += 4, j += 2)
>+ for (i=0, j=0; j < 16; i += 4, ++j)
> {
>- VIAMPGSurface.dwQMatrix[0][j+1] =
>- (s->intra_matrix[ s->intra_scantable.permutated[i+0] ] >> 8) << 0 |
>- (s->intra_matrix[ s->intra_scantable.permutated[i+1] ] >> 8) << 8 |
>- (s->intra_matrix[ s->intra_scantable.permutated[i+2] ] >> 8) << 16 |
>- (s->intra_matrix[ s->intra_scantable.permutated[i+3] ] >> 8) << 24;
>-
>- VIAMPGSurface.dwQMatrix[0][j+0] =
>- (s->intra_matrix[ s->intra_scantable.permutated[i+0] ] & 0xff) << 0 |
>- (s->intra_matrix[ s->intra_scantable.permutated[i+1] ] & 0xff) << 8 |
>- (s->intra_matrix[ s->intra_scantable.permutated[i+2] ] & 0xff) << 16 |
>- (s->intra_matrix[ s->intra_scantable.permutated[i+3] ] & 0xff) << 24;
>- }
>-
>- for (i = 0, j = 0; j < 16; i += 4, j += 2)
>- {
>- VIAMPGSurface.dwQMatrix[1][j+1] =
>- (s->inter_matrix[ s->inter_scantable.permutated[i+0] ] >> 8) << 0 |
>- (s->inter_matrix[ s->inter_scantable.permutated[i+1] ] >> 8) << 8 |
>- (s->inter_matrix[ s->inter_scantable.permutated[i+2] ] >> 8) << 16 |
>- (s->inter_matrix[ s->inter_scantable.permutated[i+3] ] >> 8) << 24;
>-
>- VIAMPGSurface.dwQMatrix[1][j+0] =
>- (s->inter_matrix[ s->inter_scantable.permutated[i+0] ] & 0xff) << 0 |
>- (s->inter_matrix[ s->inter_scantable.permutated[i+1] ] & 0xff) << 8 |
>- (s->inter_matrix[ s->inter_scantable.permutated[i+2] ] & 0xff) << 16 |
>- (s->inter_matrix[ s->inter_scantable.permutated[i+3] ] & 0xff) << 24;
>+ VIAMPGSurface.dwQMatrix[0][j] =
>+ s->viaslice_intra_matrix[i] |
>+ s->viaslice_intra_matrix[i+1] << 8 |
>+ s->viaslice_intra_matrix[i+2] << 16 |
>+ s->viaslice_intra_matrix[i+3] << 24;
>+
>+ VIAMPGSurface.dwQMatrix[1][j] =
>+ s->viaslice_inter_matrix[i] |
>+ s->viaslice_inter_matrix[i+1] << 8 |
>+ s->viaslice_inter_matrix[i+2] << 16 |
>+ s->viaslice_inter_matrix[i+3] << 24;
> }
>
> VIAMPGSurface.dwQMatrixChanged = 1;
>
>
>------------------------------------------------------------------------
>
>_______________________________________________
>mythtv-dev mailing list
>mythtv-dev at mythtv.org
>http://mythtv.org/cgi-bin/mailman/listinfo/mythtv-dev
>
>
Kenneth,
Just be sure before I start messing with kernel en xfree modules... (again)
The combination mythcvs, this patch, the viaslice-field-reverse.patch
for videoout_viaslice.cpp andyour new version of libddmpeg (1.7) works
for you?
Thanks for all the effort ..
Steven
More information about the mythtv-dev
mailing list