Ejemplo n.º 1
0
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;
}
Ejemplo n.º 2
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;
}