int flvsrv_init(FLVSRV_CTXT_T *pFlv, unsigned int vidTmpFrameSz) { //int rc; pFlv->state = FLVSRV_STATE_INVALID; pFlv->cbWrite = flvsrv_cbWriteDataNet; pFlv->out.bs.sz = 1024; if((pFlv->out.bs.buf = (unsigned char *) avc_calloc(1, pFlv->out.bs.sz)) == NULL) { return -1; } if(vidTmpFrameSz == 0) { vidTmpFrameSz = STREAMER_RTMPQ_SZSLOT_MAX; } if((codecfmt_init(&pFlv->av, vidTmpFrameSz, 0)) < 0) { //pFlv->av.vid.tmpFrame.sz = vidTmpFrameSz; //if(!(pFlv->av.vid.tmpFrame.buf = (unsigned char *) avc_calloc(1, pFlv->av.vid.tmpFrame.sz))) { flvsrv_close(pFlv); return -1; } // // Enable queing up to 1 video frame - in the case where a keyframe is received, but no audio // start headers have yet been observed. Otherwise, the video would not start until the next // video keyframe after the audio start headers have been observed // pFlv->queuedFrames.max = 1; //pFlv->g_fd = open("test.flv", O_RDWR | O_CREAT, 0666); return 0; }
static int http_flv_init(CAP_HTTP_FLV_T *pState) { int rc = 0; if((rc = rtmp_parse_init(&pState->client.ctxt, RTMP_TMPFRAME_VID_SZ, 0)) < 0) { return rc; } if((rc = codecfmt_init(&pState->client.ctxt.av, RTMP_TMPFRAME_VID_SZ, RTMP_TMPFRAME_AUD_SZ)) < 0) { http_flv_close(pState); return rc; } // //TODO: if "flv://" or --filter="type=flv" is omitted, only 1 (m2t) queue is created // in capture_net.c::stream_capture, which is not suitable for this... that code should be extracted // into a module which can be invoked from here once we discover the capture has CONTENT_TYPE FLV // if(pState->common.pCfg->pcommon->filt.filters[0].pCapAction) { pState->client.pQVid = pState->common.pCfg->pcommon->filt.filters[0].pCapAction->pQueue; } if(pState->common.pCfg->pcommon->filt.filters[1].pCapAction) { pState->client.pQAud = pState->common.pCfg->pcommon->filt.filters[1].pCapAction->pQueue; } //fprintf(stderr, "VID PQ maxPkts:%d, maxPktLen:%d, grow:%d,%d\n", pState->client.pQVid->cfg.maxPkts, pState->client.pQVid->cfg.maxPktLen, pState->client.pQVid->cfg.growMaxPkts, pState->client.pQVid->cfg.growMaxPktLen); return rc; }