From: Stefan Ringel <stefan.ringel@arcor.de>
To: Mauro Carvalho Chehab <mchehab@redhat.com>
Cc: Linux Media Mailing List <linux-media@vger.kernel.org>
Subject: Re: tm6000 calculating urb buffer
Date: Tue, 04 May 2010 17:38:53 +0200 [thread overview]
Message-ID: <4BE03F8D.1050905@arcor.de> (raw)
In-Reply-To: <4BDB3017.9070101@arcor.de>
[-- Attachment #1: Type: text/plain, Size: 698 bytes --]
Am 30.04.2010 21:31, schrieb Stefan Ringel:
> Am 30.04.2010 18:34, schrieb Stefan Ringel:
>
>> Hi Mauro,
>>
>> Today I'm writing directly to you, because it doesn't work the mailing
>> list. I thought over the calculating urb buffer and I have follow idea:
>>
>> buffer = endpoint fifo size (3072 Bytes) * block size (184 Bytes)
>>
>> The actually calculating is a video frame size (image = width * hight *
>> 2 Bytes/Pixel), so that this buffer has to begin and to end an
>> uncomplete block. followed blocks are setting the logic to an err_mgs
>> block, so that going to lost frames.
>>
>>
>>
> I forgot a log with old calculating.
>
>
--
Stefan Ringel <stefan.ringel@arcor.de>
[-- Attachment #2: datagram_urb_to_videobuf --]
[-- Type: text/plain, Size: 2238 bytes --]
tm6000
datagram from urb to videobuf
urb copy to temp copy to 1. videobuf
buffer 2. audiobuf
3. vbi
184 Packets -------> 184 * 3072 ----------> 4. etc.
a 3072 bytes bytes
184 * 3072 *
3072 bytes 180 bytes
(184 bytes - 4 bytes
header )
step 1
copy from urb to temp buffer
snip
----
for (i = 0; i < urb->number_of_packets; i++) {
int status = urb->iso_frame_desc[i].status;
if (status<0) {
print_err_status (dev,i,status);
continue;
}
len=urb->iso_frame_desc[i].actual_length;
memcpy (t_buf[i*len], urb->transfer_buffer[i*len], len);
copied += len;
if (copied >= size || !buf)
break;
}
if (!urb->iso_frame_desc[i].status) {
if ((buf->fmt->fourcc)==V4L2_PIX_FMT_TM6000) {
rc=copy_multiplexed(t_buf, outp, len, urb, &buf);
if (rc<=0)
return rc;
} else {
copy_streams(t_buf, outp, len, urb, &buf);
}
}
---
snip
step 2
copy from temp buffer into videobuffer
snip
---
for (i=0;i<3072;i++) {
switch(cmd) {
case TM6000_URB_MSG_VIDEO:
/* Fills video buffer */
memcpy(&out_p[(line << 1 + field) * block * 180],
ptr[(i*184)+4], 180);
printk (KERN_INFO "cmd=%s, size=%d\n",
tm6000_msg_type[cmd],size);
break;
case TM6000_URB_MSG_PTS:
printk (KERN_INFO "cmd=%s, size=%d\n",
tm6000_msg_type[cmd],size);
break;
case TM6000_URB_MSG_AUDIO:
/* Need some code to process audio */
printk ("%ld: cmd=%s, size=%d\n", jiffies,
tm6000_msg_type[cmd],size);
break;
default:
dprintk (dev, V4L2_DEBUG_ISOC, "cmd=%s, size=%d\n",
printk (KERN_INFO "cmd=%s, size=%d\n",
tm6000_msg_type[cmd],size);
}
}
}
---
snip
This is a schemata to copy in videobuf.
temp_buf = fifo size * block size
viodeobuf = hight * wight * 2
Questions
1. Is it right if I copy the block without header to videobufer?
2. Can I full the videobuffer have more temp_bufs?
3. How are the actually data schema from urb to videobuffer?
next parent reply other threads:[~2010-05-04 15:40 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <4BDB067E.4070501@arcor.de>
[not found] ` <4BDB3017.9070101@arcor.de>
2010-05-04 15:38 ` Stefan Ringel [this message]
2010-05-04 18:25 ` tm6000 calculating urb buffer Mauro Carvalho Chehab
2010-05-04 19:13 ` Stefan Ringel
2010-05-04 19:50 ` Mauro Carvalho Chehab
2010-05-04 19:58 ` Stefan Ringel
2010-05-05 6:07 ` Mauro Carvalho Chehab
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4BE03F8D.1050905@arcor.de \
--to=stefan.ringel@arcor.de \
--cc=linux-media@vger.kernel.org \
--cc=mchehab@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox