
Recherche avancée
Médias (1)
-
Rennes Emotion Map 2010-11
19 octobre 2011, par
Mis à jour : Juillet 2013
Langue : français
Type : Texte
Autres articles (76)
-
Organiser par catégorie
17 mai 2013, parDans MédiaSPIP, une rubrique a 2 noms : catégorie et rubrique.
Les différents documents stockés dans MédiaSPIP peuvent être rangés dans différentes catégories. On peut créer une catégorie en cliquant sur "publier une catégorie" dans le menu publier en haut à droite ( après authentification ). Une catégorie peut être rangée dans une autre catégorie aussi ce qui fait qu’on peut construire une arborescence de catégories.
Lors de la publication prochaine d’un document, la nouvelle catégorie créée sera proposée (...) -
Récupération d’informations sur le site maître à l’installation d’une instance
26 novembre 2010, parUtilité
Sur le site principal, une instance de mutualisation est définie par plusieurs choses : Les données dans la table spip_mutus ; Son logo ; Son auteur principal (id_admin dans la table spip_mutus correspondant à un id_auteur de la table spip_auteurs)qui sera le seul à pouvoir créer définitivement l’instance de mutualisation ;
Il peut donc être tout à fait judicieux de vouloir récupérer certaines de ces informations afin de compléter l’installation d’une instance pour, par exemple : récupérer le (...) -
Publier sur MédiaSpip
13 juin 2013Puis-je poster des contenus à partir d’une tablette Ipad ?
Oui, si votre Médiaspip installé est à la version 0.2 ou supérieure. Contacter au besoin l’administrateur de votre MédiaSpip pour le savoir
Sur d’autres sites (3822)
-
avio : Copy URLContext generic options into child URLContexts
28 février 2015, par Martin Storsjöavio : Copy URLContext generic options into child URLContexts
Since all URLContexts have the same AVOptions, such AVOptions
will be applied on the outermost context only and removed from the
dict, while they probably make sense on all contexts.This makes sure that rw_timeout gets propagated to the innermost
URLContext (to make sure it gets passed to the tcp protocol, when
opening a http connection for instance).Alternatively, such matching options would be kept in the dict
and only removed after the ffurl_connect call.Signed-off-by : Martin Storsjö <martin@martin.st>
- [DBH] libavformat/avio.c
- [DBH] libavformat/aviobuf.c
- [DBH] libavformat/concat.c
- [DBH] libavformat/crypto.c
- [DBH] libavformat/gopher.c
- [DBH] libavformat/hlsproto.c
- [DBH] libavformat/http.c
- [DBH] libavformat/icecast.c
- [DBH] libavformat/md5proto.c
- [DBH] libavformat/mmst.c
- [DBH] libavformat/rtmpcrypt.c
- [DBH] libavformat/rtmpproto.c
- [DBH] libavformat/rtpproto.c
- [DBH] libavformat/rtsp.c
- [DBH] libavformat/rtspdec.c
- [DBH] libavformat/sapdec.c
- [DBH] libavformat/sapenc.c
- [DBH] libavformat/smoothstreamingenc.c
- [DBH] libavformat/srtpproto.c
- [DBH] libavformat/tls.c
- [DBH] libavformat/url.h
-
hwcontext_vulkan : create all images with concurrent sharing mode
10 mai 2020, par Lynnehwcontext_vulkan : create all images with concurrent sharing mode
As it turns out, we were already assuming and treating all images as if they had
concurrent access mode. This just changes the flag to CONCURRENT, which has less
restrictions than EXCLUSIVE, and fixed validation messages on machines with
multiple queues.
The validation layer didn't pick this up because the machine I was testing on
had only a single queue. -
UDP Networking - SO_REUSEADDR and select failing on Windows
22 janvier 2019, par LucaI’m trying to set up multiple instances of FFMpeg for receiving a MPEG 2 TS stream. Both application setup the
SO_REUSEADDR
socket option.The UDP socket bind is successful, but only the first FFMpeg instance is actually receiving. As soon as the receiving instance is closed, the second instance starts receiving.
I’ve set up a unit test demonstrating the actual FFMpeg behavior, extracting the actual system calls executed. The test is failing because the
select
call does not detect an I/O event on the second socket.What prevents the second socket to receive the datagram ?
Note : this is a Google Test test. Just replace the
TEST
macro with a main function to get it working.#include
#include
#pragma comment(lib, "ws2_32.lib")
typedef unsigned long nfds_t;
int FFMPEGSocket_CreateSocketTx()
{
return socket(AF_INET, SOCK_DGRAM, 0);
}
int FFMPEGSocket_CreateSocket()
{
// Create socket
int fd = socket(AF_INET, SOCK_DGRAM, 0);
EXPECT_GT(fd, 0);
// Set SO_REUSEADDR
int reuse_socket = 1;
EXPECT_EQ(setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, (const char*)&reuse_socket, sizeof(reuse_socket)), 0);
// Bind
struct sockaddr_in udpService;
udpService.sin_family = AF_INET;
udpService.sin_addr.s_addr = htonl(INADDR_ANY);
udpService.sin_port = htons(4609);
EXPECT_EQ(::bind(fd, (SOCKADDR*)&udpService, sizeof(udpService)), 0);
// Set non blocking IO
u_long param = 1;
EXPECT_EQ(ioctlsocket(fd, FIONBIO, &param), 0);
return fd;
}
void FFMPEGSocket_CloseSocket(int fd)
{
closesocket(fd);
}
int FFMPEGSocket_Pool(struct pollfd *fds, nfds_t numfds, int timeout)
{
fd_set read_set;
fd_set write_set;
fd_set exception_set;
nfds_t i;
int n = 0;
int rc;
FD_ZERO(&read_set);
FD_ZERO(&write_set);
FD_ZERO(&exception_set);
for (int i = 0; i < numfds; i++) {
if (fds[i].events & POLLIN)
FD_SET(fds[i].fd, &read_set);
if (fds[i].events & POLLOUT)
FD_SET(fds[i].fd, &write_set);
if (fds[i].events & POLLERR)
FD_SET(fds[i].fd, &exception_set);
if (fds[i].fd >= n)
n = fds[i].fd + 1;
}
timeval tv;
tv.tv_sec = 100 / 1000;
tv.tv_usec = 1000 * (100 % 1000);
rc = select(n, &read_set, &write_set, &exception_set, &tv);
for (int i = 0; i < numfds; i++) {
fds[i].revents = 0;
if (FD_ISSET(fds[i].fd, &read_set))
fds[i].revents |= POLLIN;
if (FD_ISSET(fds[i].fd, &write_set))
fds[i].revents |= POLLOUT;
if (FD_ISSET(fds[i].fd, &exception_set))
fds[i].revents |= POLLERR;
}
return rc;
}
TEST(FFMPEGSocket, PosixReuseAddr)
{
WSADATA wsaData;
// Initialize network layer
std::memset(&wsaData, 0, sizeof(wsaData));
WSAStartup(MAKEWORD(2, 2), &wsaData);
// Create two receiving sockets
int fd1 = FFMPEGSocket_CreateSocket();
int fd2 = FFMPEGSocket_CreateSocket();
int fdtx = FFMPEGSocket_CreateSocketTx();
// Read loop
int ev = POLLIN;
struct pollfd p1 = { fd1, ev, 0 };
struct pollfd p2 = { fd2, ev, 0 };
bool p1event = false, p2event = false;
char datagram[32] = { 0 };
for (int i = 0; (i < 10) && (!p1event || !p2event); i++) {
{ // Transmit a single datagram
struct sockaddr_in udpService;
udpService.sin_family = AF_INET;
udpService.sin_addr.s_addr = htonl(0x7F000001);
udpService.sin_port = htons(4609);
sendto(fdtx, datagram, 32, 0, (const sockaddr*)&udpService, sizeof(udpService));
}
// Receive
struct pollfd fds[2] = { p1, p2 };
if (FFMPEGSocket_Pool(fds, 2, 1000) < 0)
break; // Fail
if (fds[0].revents & POLLIN)
p1event = true;
if (fds[1].revents & POLLIN)
p2event = true;
}
EXPECT_TRUE(p1event);
EXPECT_TRUE(p2event);
FFMPEGSocket_CloseSocket(fd1);
FFMPEGSocket_CloseSocket(fd2);
// Shutdown network layer
WSACleanup();
}