bool AmdtpTransmitStreamProcessor::prepareChild() { debugOutput ( DEBUG_LEVEL_VERBOSE, "Preparing (%p)...\n", this ); m_syt_interval = getSytInterval(); m_fdf = getFDF(); debugOutput ( DEBUG_LEVEL_VERBOSE, " SYT interval / FDF : %d / %d\n", m_syt_interval, m_fdf ); #if AMDTP_ALLOW_PAYLOAD_IN_NODATA_XMIT debugOutput ( DEBUG_LEVEL_VERBOSE, " Send payload in No-Data packets: %s \n", m_send_nodata_payload?"Yes":"No" ); #endif debugOutput ( DEBUG_LEVEL_VERBOSE, " Max early transmit cycles : %d\n", m_max_cycles_to_transmit_early ); debugOutput ( DEBUG_LEVEL_VERBOSE, " Transfer delay : %d\n", m_transmit_transfer_delay ); debugOutput ( DEBUG_LEVEL_VERBOSE, " Min cycles before presentation : %d\n", m_min_cycles_before_presentation ); iec61883_cip_init ( &m_cip_status, IEC61883_FMT_AMDTP, m_fdf, m_StreamProcessorManager.getNominalRate(), m_dimension, m_syt_interval ); if (!initPortCache()) { debugError("Could not init port cache\n"); return false; } return true; }
iec61883_dv_t iec61883_dv_xmit_init (raw1394handle_t handle, int is_pal, iec61883_dv_xmit_t get_data, void *callback_data) { /* DV is composed of DIF blocks, each 480 bytes */ int dbs = DIF_BLOCK_SIZE / sizeof (quadlet_t); int fdf = is_pal ? 0x80 : 0x00; int syt_interval = is_pal ? 300 : 250; int rate = syt_interval * (is_pal ? 25 : 30000.0/1001.0); struct iec61883_dv *dv; assert (handle != NULL); dv = malloc (sizeof (struct iec61883_dv)); if (!dv) { errno = ENOMEM; return NULL; } dv->channel = -1; dv->handle = handle; dv->put_data = NULL; dv->get_data = get_data; dv->callback_data = callback_data; dv->buffer_packets = 1000; dv->prebuffer_packets = 1000; dv->irq_interval = 250; dv->synch = 0; dv->speed = RAW1394_ISO_SPEED_100; iec61883_cip_init (&dv->cip, IEC61883_FMT_DV, fdf, rate, dbs, syt_interval); iec61883_cip_set_transmission_mode (&dv->cip, IEC61883_MODE_NON_BLOCKING); raw1394_set_userdata (handle, dv); return dv; }