Lines Matching defs:frame

677 	//If this is a new frame and we haven't retrieved parser
678 // workload data from previous frame yet, do so
694 LOG_V( "Queried for last frame data\n");
703 //We log this but need to process the new frame data, so do not return
707 LOG_V( "Called process and decode for last frame\n");
716 LOG_V( "Starting current frame %d, timestamp %"G_GINT64_FORMAT"\n", mix_video_vc1_counter++, ts);
721 LOG_V( "Calling parse for current frame, parse handle %d, buf %x, size %d\n", (int)parent->parser_handle, (guint)bufin[i]->data, bufin[i]->size);
728 LOG_V( "Called parse for current frame\n");
743 LOG_V( "Called query for current frame\n");
763 LOG_V( "Enqueue this input buffer for current frame\n");
780 LOG_V( "Called process and decode for current frame\n");
793 LOG_V( "Enqueuing buffer and going on to next (if any) for this frame\n");
834 MIX_RESULT GetImageFromSurface (MixVideoFormat *mix, MixVideoFrame * frame)
854 if ((mix == NULL) || (frame == NULL))
873 vaStatus = vaGetImage( mix->va_display, frame->frame_id, 0, 0, ui32SrcWidth, ui32SrcHeight, va_image.image_id );
921 MixVideoFrame *frame)
945 //Set the picture type (I, B or P frame)
950 //We need to have both reference frames in hand before we can decode a B frame
952 //Note: demuxer should do the right thing and only seek to I frame, so we should
953 // not get P frame first, but may get B frames after the first I frame
958 LOG_E( "Insufficient reference frames for B frame\n");
973 LOG_V( "frame type is %d\n", frame_type);
977 //Get our surface ID from the frame object
978 ret = mix_videoframe_get_frame_id(frame, &surface);
981 LOG_E( "Error getting surface ID from frame object\n");
985 //Get a frame from the surface pool
989 //Set the frame type for the frame object (used in reordering by frame manager)
992 case VC1_PTYPE_I: // I frame type
993 case VC1_PTYPE_P: // P frame type
994 case VC1_PTYPE_B: // B frame type
995 ret = mix_videoframe_set_frame_type(frame, frame_type);
997 case VC1_PTYPE_BI: // BI frame type
998 ret = mix_videoframe_set_frame_type(frame, TYPE_I);
1008 LOG_E( "Error setting frame type on frame\n");
1018 case VC1_PTYPE_I: // I frame type
1024 LOG_V( "I frame, surface ID %u\n", (guint)frame->frame_id);
1027 case VC1_PTYPE_P: // P frame type
1033 /* The previous decoded frame (distance is up to 16 but not 0) is used
1049 updated to a valid previous reconstructed reference frame later.
1074 LOG_E( "Error could not find reference frames for P frame\n");
1080 LOG_V( "P frame, surface ID %u, forw ref frame is %u\n", (guint)frame->frame_id, (guint)self->reference_frames[0]->frame_id);
1084 case VC1_PTYPE_B: // B frame type
1085 LOG_V( "B frame, forw ref %d, back ref %d\n", (guint)self->reference_frames[0]->frame_id, (guint)self->reference_frames[1]->frame_id);
1088 // for the extra ref frame so this is an error
1091 LOG_E( "Unexpected B frame, cannot process\n");
1098 LOG_V( "B frame, surface ID %u, forw ref %d, back ref %d\n", (guint)frame->frame_id, (guint)self->reference_frames[0]->frame_id, (guint)self->reference_frames[1]->frame_id);
1105 LOG_V( "BI frame\n");
1122 LOG_V( "Setting in loop decoded picture to current frame\n");
1124 pic_params->inloop_decoded_picture = frame->frame_id;
1305 MixVideoFrame *frame = NULL;
1330 //Check for skipped frame
1331 //For skipped frames, we will reuse the last P or I frame surface and treat as P frame
1338 //we shouldn't get a skipped frame before we are able to get a real frame
1339 LOG_E( "Error for skipped frame, prev frame is NULL\n");
1350 LOG_E( "Error allocating new video frame object for skipped frame\n");
1364 LOG_V( "Processing skipped frame %x, frame_id set to %d, ts %"G_GINT64_FORMAT"\n", (guint)skip_frame, (guint)frameid, timestamp);
1367 LOG_V( "Updating skipped frame forward/backward references for libva\n");
1372 //Enqueue the skipped frame using frame manager
1379 ret = mix_surfacepool_get(mix->surfacepool, &frame);
1382 LOG_E( "Error getting frame from surfacepool\n");
1394 ret = mix_videofmt_vc1_decode_a_picture(mix, data, index, frame);
1403 mix_videoframe_set_discontinuity(frame, discontinuity);
1406 mix_videoframe_set_timestamp(frame, timestamp);
1408 // setup frame structure
1412 mix_videoframe_set_frame_structure(frame, VA_TOP_FIELD);
1414 mix_videoframe_set_frame_structure(frame, VA_BOTTOM_FIELD);
1418 mix_videoframe_set_frame_structure(frame, VA_FRAME_PICTURE);
1424 //Save this frame off for skipped frame handling
1431 self->lastFrame = frame;
1432 mix_videoframe_ref(frame);
1435 //Update the references frames for the current frame
1436 if ((frame_type == VC1_PTYPE_I) || (frame_type == VC1_PTYPE_P)) //If I or P frame, update the reference array
1441 frame);
1447 ret = GetImageFromSurface (mix, frame);
1451 LOG_V( "Enqueueing the frame with frame manager, timestamp %"G_GINT64_FORMAT"\n", timestamp);
1453 //Enqueue the decoded frame using frame manager
1454 ret = mix_framemanager_enqueue(mix->framemgr, frame);
1458 LOG_E( "Error enqueuing frame object\n");
1468 mix_videoframe_unref(frame);
1572 //if a frame is in progress, process the frame
1592 LOG_E( "Error processing last frame\n");
1654 case VC1_PTYPE_I: // I frame type
1655 case VC1_PTYPE_P: // P frame type
1656 LOG_V( "Refing reference frame %x\n", (guint) current_frame);
1662 if (self->reference_frames[0] == NULL) //should only happen on first frame
1667 else if (self->reference_frames[1] == NULL) //should only happen on second frame
1673 LOG_V( "Releasing reference frame %x\n", (guint) self->reference_frames[0]);
1679 else //No B frames in this content, only need to keep the forward reference frame
1681 LOG_V( "Releasing reference frame %x\n", (guint) self->reference_frames[0]);
1688 case VC1_PTYPE_B: // B or BI frame type (should not happen)
1691 LOG_E( "Wrong frame type for handling reference frames\n");
1714 //Dequeue and release all input buffers for this frame
1716 LOG_V( "Releasing all the MixBuffers for this frame\n");