mirror of
				https://gitlab.freedesktop.org/pipewire/pipewire.git
				synced 2025-11-03 09:01:54 -05:00 
			
		
		
		
	video-play: let stream map for us
This commit is contained in:
		
							parent
							
								
									40d2451718
								
							
						
					
					
						commit
						2a159c04ff
					
				
					 1 changed files with 4 additions and 14 deletions
				
			
		| 
						 | 
					@ -93,7 +93,6 @@ do_render(struct spa_loop *loop, bool async, uint32_t seq,
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	struct data *data = user_data;
 | 
						struct data *data = user_data;
 | 
				
			||||||
	struct spa_buffer *buf = ((struct spa_buffer **) _data)[0];
 | 
						struct spa_buffer *buf = ((struct spa_buffer **) _data)[0];
 | 
				
			||||||
	uint8_t *map;
 | 
					 | 
				
			||||||
	void *sdata, *ddata;
 | 
						void *sdata, *ddata;
 | 
				
			||||||
	int sstride, dstride, ostride;
 | 
						int sstride, dstride, ostride;
 | 
				
			||||||
	uint32_t i;
 | 
						uint32_t i;
 | 
				
			||||||
| 
						 | 
					@ -101,15 +100,7 @@ do_render(struct spa_loop *loop, bool async, uint32_t seq,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	handle_events(data);
 | 
						handle_events(data);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (buf->datas[0].type == data->t->data.MemFd ||
 | 
						if ((sdata = buf->datas[0].data) == NULL)
 | 
				
			||||||
	    buf->datas[0].type == data->t->data.DmaBuf) {
 | 
					 | 
				
			||||||
		map = mmap(NULL, buf->datas[0].maxsize + buf->datas[0].mapoffset, PROT_READ,
 | 
					 | 
				
			||||||
			   MAP_PRIVATE, buf->datas[0].fd, 0);
 | 
					 | 
				
			||||||
		sdata = SPA_MEMBER(map, buf->datas[0].mapoffset, uint8_t);
 | 
					 | 
				
			||||||
	} else if (buf->datas[0].type == data->t->data.MemPtr) {
 | 
					 | 
				
			||||||
		map = NULL;
 | 
					 | 
				
			||||||
		sdata = buf->datas[0].data;
 | 
					 | 
				
			||||||
	} else
 | 
					 | 
				
			||||||
		return -EINVAL;
 | 
							return -EINVAL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (SDL_LockTexture(data->texture, NULL, &ddata, &dstride) < 0) {
 | 
						if (SDL_LockTexture(data->texture, NULL, &ddata, &dstride) < 0) {
 | 
				
			||||||
| 
						 | 
					@ -132,9 +123,6 @@ do_render(struct spa_loop *loop, bool async, uint32_t seq,
 | 
				
			||||||
	SDL_RenderCopy(data->renderer, data->texture, NULL, NULL);
 | 
						SDL_RenderCopy(data->renderer, data->texture, NULL, NULL);
 | 
				
			||||||
	SDL_RenderPresent(data->renderer);
 | 
						SDL_RenderPresent(data->renderer);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (map)
 | 
					 | 
				
			||||||
		munmap(map, buf->datas[0].maxsize + buf->datas[0].mapoffset);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	return 0;
 | 
						return 0;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -366,7 +354,9 @@ static void on_state_changed(void *_data, enum pw_remote_state old, enum pw_remo
 | 
				
			||||||
		pw_stream_connect(data->stream,
 | 
							pw_stream_connect(data->stream,
 | 
				
			||||||
				  PW_DIRECTION_INPUT,
 | 
									  PW_DIRECTION_INPUT,
 | 
				
			||||||
				  data->path,
 | 
									  data->path,
 | 
				
			||||||
				  PW_STREAM_FLAG_AUTOCONNECT | PW_STREAM_FLAG_INACTIVE,
 | 
									  PW_STREAM_FLAG_AUTOCONNECT |
 | 
				
			||||||
 | 
									  PW_STREAM_FLAG_INACTIVE |
 | 
				
			||||||
 | 
									  PW_STREAM_FLAG_MAP_BUFFERS,
 | 
				
			||||||
				  params, 1);
 | 
									  params, 1);
 | 
				
			||||||
		break;
 | 
							break;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue