+ demux_sys_t *p_sys = p_demux_->p_sys;
+
+ if (videoFrame) {
+ if (videoFrame->GetFlags() & bmdFrameHasNoInputSource) {
+ msg_Warn( p_demux_, "No input signal detected" );
+ return S_OK;
+ }
+
+ msg_Dbg( p_demux_, "Received a frame" );
+
+ block_t *p_frame;
+ p_frame = block_New( p_demux_, 720 * 576 * 3 );
+ if ( !p_frame ) {
+ msg_Err( p_demux_, "Could not allocate memory for frame" );
+ return S_OK;
+ }
+
+ void *frame_bytes;
+ videoFrame->GetBytes( &frame_bytes );
+ memcpy( p_frame->p_buffer, frame_bytes, 720 * 576 * 3 );
+
+ BMDTimeValue stream_time, frame_duration;
+ videoFrame->GetStreamTime( &stream_time, &frame_duration, 1000000 );
+ p_frame->i_pts = stream_time;
+
+ vlc_mutex_lock( &p_sys->lock );
+ p_sys->p_frame = p_frame; // FIXME: leak
+ vlc_mutex_unlock( &p_sys->lock );
+ }
+