예제 #1
0
 bool ACapture::nextFrame(Mat & frame){
   Mat frm;
   bool hasNext;
   hasNext=extractFrame(frm);
   if (hasNext){
     if (toGrayscale && frm.channels()>2){
       Mat gray(frm.size(), CV_8UC1);
       cvtColor(frm, gray, CV_BGR2GRAY);
       gray.copyTo(frame);
     } else {
       frm.copyTo(frame);
     }
     return true;
   }
   return false;
 }  
bool RtspStreamWorker::processPacket(struct AVPacket packet)
{
    emit bytesDownloaded(packet.size);

    while (packet.size > 0)
    {
        bool breakLoop;
        AVFrame *frame = extractFrame(packet, &breakLoop);
        if (frame)
        {
            processFrame(frame);
            av_free(frame);
        }

        if (breakLoop)
            return false;
    }

    return true;
}