/** Writes single NDArray to the ffmpeg file. * \param[in] pArray Pointer to the NDArray to be written */ asynStatus ffmpegFile::writeFile(NDArray *pArray) { static const char *functionName = "writeFile"; int ret; char errbuf[AV_ERROR_MAX_STRING_SIZE]; if (!needStop) { asynPrint(this->pasynUserSelf, ASYN_TRACE_ERROR, "%s:%s: video stream not setup properly\n", driverName2, functionName); return(asynError); } if (formatArray(pArray, this->pasynUserSelf, this->inPicture, &(this->ctx), this->c, this->scPicture) != asynSuccess) { asynPrint(this->pasynUserSelf, ASYN_TRACE_ERROR, "%s:%s: Could not format array for correct pix_fmt for codec\n", driverName2, functionName); return(asynError); } /* encode the image */ AVPacket pkt; int got_output; av_init_packet(&pkt); pkt.data = NULL; // packet data will be allocated by the encoder pkt.size = 0; ret = avcodec_encode_video2(c, &pkt, this->scPicture, &got_output); if (ret < 0) { fprintf(stderr, "Error encoding video frame: %s\n", av_make_error_string(errbuf, AV_ERROR_MAX_STRING_SIZE, ret)); exit(1); } /* If size is zero, it means the image was buffered. */ if (got_output) { if (c->coded_frame->key_frame) pkt.flags |= AV_PKT_FLAG_KEY; pkt.stream_index = video_st->index; /* Write the compressed frame to the media file. */ ret = av_interleaved_write_frame(oc, &pkt); } else { printf("got_output = 0, shouldn't see this\n"); ret = 0; } scPicture->pts += av_rescale_q(1, video_st->codec->time_base, video_st->time_base); if (ret != 0) { asynPrint(this->pasynUserSelf, ASYN_TRACE_ERROR, "%s:%s Error while writing video frame\n", driverName2, functionName); } return(asynSuccess); }
void format(Memory *mem, VariableValue &value, VariableType *type, QString &out, QString &tooltip) { switch(type->getType()) { case VariableType::Array: formatArray(mem, value, type, out, tooltip); break; default: formatBase(mem, value, type, out, tooltip); break; }; }
void JsonPrettify::formatValue (web::json::value &val, utility::ostream_t &stream) { if ( val.is_array () ) formatArray (val.as_array (), stream) ; else if ( val.is_object () ) formatObject (val.as_object (), stream) ; else if ( val.is_string () ) format_string (val.as_string (), stream) ; else if ( val.is_boolean () ) format_boolean (val.as_bool (), stream) ; else if ( val.is_integer () ) format_integer (val.as_integer (), stream) ; else if ( val.is_double () ) format_double (val.as_double (), stream) ; else if ( val.is_null () ) format_null (stream) ; }