From bb613f90ab3d95248784943316a844909d7f7aa0 Mon Sep 17 00:00:00 2001 From: F5OEO Date: Tue, 1 Jan 2019 22:56:02 +0000 Subject: [PATCH] First moving pictures --- app/testrpitx.cpp | 47 +++++++++++++++++++++-------------------------- src/atv.cpp | 21 +++++++++++++++------ src/dma.cpp | 4 +--- 3 files changed, 37 insertions(+), 35 deletions(-) diff --git a/app/testrpitx.cpp b/app/testrpitx.cpp index 35bb4ad..b38e82c 100644 --- a/app/testrpitx.cpp +++ b/app/testrpitx.cpp @@ -640,34 +640,29 @@ void SimpleTestAtv(uint64_t Freq) atv atvtest(Freq, SR, 14, 625); - //Frame 0 - for (int j = 0; j < 312; j++) - { - if (j < 160) - { - - for (int i = 0; i < 52; i++) - { - - samples[i + j * 52] = 255*(1-i/52.0);//Frame 0 - samples[i + j*52+312*52] =255*(1-i/52.0); //Frame 1 - } - } - else - { - for (int i = 0; i < 52; i++) - { - samples[i + j * 52] = 255*(1-i/52.0); - samples[i + j*52+312*52] =255*(1-i/52.0); - } - } - } - //atvtest.SetFrame(samples,625); - atvtest.start(); - while (running) + atvtest.start(); + for(int frame=0;running;frame++) { + for(int i=0;i<625;i++) + { + for (int j = 0; j < 52; j++) + { + if(i%2==0) + samples[i/2*52+j]=((i+j*frame)%255); + else + samples[i/2*52+j+52*312]=((i+j*frame)%255); + /*if(i%16<8) + samples[i*52+j]=(j%8<4)?0:255; + else + samples[i*52+j]=(j%8<4)?255:0;*/ + } + } + + + //atvtest.SetTvSamples(samples,FifoSize/4); - usleep(400000); + atvtest.SetFrame(samples,625); + usleep(40000); } } diff --git a/src/atv.cpp b/src/atv.cpp index e125389..17fa61c 100644 --- a/src/atv.cpp +++ b/src/atv.cpp @@ -90,7 +90,7 @@ void atv::SetDmaAlgo() for (int frame = 0; frame < 2; frame++) { - //Preegalisation //6*4CB + //Preegalisation //6*4*2FrameCB for (int i = 0; i < 6 /*-frame*/; i++) { //2us 0,30us 1 @@ -143,7 +143,7 @@ void atv::SetDmaAlgo() cbp->next = mem_virt_to_phys(cbp + 1); cbp++; } - //SYNC top trame 5*4CB + //SYNC top trame 5*4*2frameCB for (int i = 0; i < 5; i++) { cbp->info = 0; //BCM2708_DMA_NO_WIDE_BURSTS | BCM2708_DMA_WAIT_RESP ; @@ -193,7 +193,7 @@ void atv::SetDmaAlgo() cbp++; } //postegalisation ; copy paste from preegalisation - //5*4CB + //5*4*2CB for (int i = 0; i < 5 /*-i*/; i++) { //2us 0,30us 1 @@ -246,7 +246,7 @@ void atv::SetDmaAlgo() cbp->next = mem_virt_to_phys(cbp + 1); cbp++; } - //(304+305)*(4+52*2)CB + //(304+305)*(4+52*2+2)CB for (int line = 0; line < /*305*/ 304 + frame; line++) { @@ -368,15 +368,24 @@ void atv::SetFrame(unsigned char *Luminance, size_t Lines) { for (size_t i = 0; i < Lines; i++) { - for (size_t x = 0; x < 52; x++) { - int AmplitudePAD = Luminance[i * 52 + x] * 6 + 1; //1 to 7 + int AmplitudePAD = (Luminance[i * 52 + x]/255.0) * 6 + 1; //1 to 7 + if (i % 2 == 0) // First field + usermem[i * 52 + x] = (0x5A << 24) + (AmplitudePAD & 0x7) + (1 << 4) + (0 << 3); // Amplitude PAD + else + usermem[i * 52 + x] = (0x5A << 24) + (AmplitudePAD & 0x7) + (1 << 4) + (0 << 3); // Amplitude PAD + + } + /*for (size_t x = 0; x < 52; x++) + { + int AmplitudePAD = (Luminance[i * 52 + x]/255.0) * 6 + 1; //1 to 7 if (i % 2 == 0) // First field usermem[i * 52 / 2 + x] = (0x5A << 24) + (AmplitudePAD & 0x7) + (1 << 4) + (0 << 3); // Amplitude PAD else //second field usermem[i * 52 / 2 + Lines / 2 + x] = (0x5A << 24) + (AmplitudePAD & 0x7) + (1 << 4) + (0 << 3); // Amplitude PAD } + */ } } diff --git a/src/dma.cpp b/src/dma.cpp index 452d269..377dcf7 100644 --- a/src/dma.cpp +++ b/src/dma.cpp @@ -31,7 +31,7 @@ extern "C" dma::dma(int Channel,uint32_t CBSize,uint32_t UserMemSize) // Fixme! Need to check to be 256 Aligned for UserMem { - fprintf(stderr,"Channel %d CBSize %d UsermemSize %d\n",Channel,CBSize,UserMemSize); + fprintf(stderr,"Channel %d CBSize %u UsermemSize %u\n",Channel,CBSize,UserMemSize); channel=Channel; mbox.handle = mbox_open(); @@ -172,8 +172,6 @@ bufferdma::bufferdma(int Channel,uint32_t tbuffersize,uint32_t tcbbysample,uint3 registerbysample=tregisterbysample; fprintf(stderr,"BufferSize %d , cb %d user %d\n",buffersize,buffersize*cbbysample,buffersize*registerbysample); - - current_sample=0; last_sample=0; sample_available=buffersize;