[mythtv] [PATCH] ViaSlice QMatrix
Mike Wood
mike at woodsnest.com
Fri Jul 9 09:44:59 EDT 2004
> -------- Original Message --------
> Subject: Re: [mythtv] [PATCH] ViaSlice QMatrix
> From: "Steven Cruysberghs" <steven.cruysberghs at tiscali.be>
> Date: Fri, July 09, 2004 3:51 am
> To: "Development of mythtv" <mythtv-dev at mythtv.org>
>
> 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
> _______________________________________________
> mythtv-dev mailing list
> mythtv-dev at mythtv.org
> http://mythtv.org/cgi-bin/mailman/listinfo/mythtv-dev
Steven,
This is my interpretation as well, however, I can't get the
viaslice-field-reverse.patch to work. It craps out on me, and I'm no
coder, so I have no idea why. The other patch worked fine. I'm
running Gentoo with:
Kernel: 2.4.25-epia2-r2
xfree: 4.4.0
libddmpeg: 1.7
When I try to play something in myth, the log tells me I have "software
flip" but I get an immediate lockup.
Mike
More information about the mythtv-dev
mailing list