
Recherche avancée
Autres articles (101)
-
MediaSPIP 0.1 Beta version
25 avril 2011, parMediaSPIP 0.1 beta is the first version of MediaSPIP proclaimed as "usable".
The zip file provided here only contains the sources of MediaSPIP in its standalone version.
To get a working installation, you must manually install all-software dependencies on the server.
If you want to use this archive for an installation in "farm mode", you will also need to proceed to other manual (...) -
Multilang : améliorer l’interface pour les blocs multilingues
18 février 2011, parMultilang est un plugin supplémentaire qui n’est pas activé par défaut lors de l’initialisation de MediaSPIP.
Après son activation, une préconfiguration est mise en place automatiquement par MediaSPIP init permettant à la nouvelle fonctionnalité d’être automatiquement opérationnelle. Il n’est donc pas obligatoire de passer par une étape de configuration pour cela. -
Le profil des utilisateurs
12 avril 2011, parChaque utilisateur dispose d’une page de profil lui permettant de modifier ses informations personnelle. Dans le menu de haut de page par défaut, un élément de menu est automatiquement créé à l’initialisation de MediaSPIP, visible uniquement si le visiteur est identifié sur le site.
L’utilisateur a accès à la modification de profil depuis sa page auteur, un lien dans la navigation "Modifier votre profil" est (...)
Sur d’autres sites (10321)
-
Ode to the Gravis Ultrasound
1er août 2011, par Multimedia Mike — GeneralWARNING : This post is a bunch of nostalgia. Feel free to follow along if you recall the DOS days of the early-mid 1990s.
I finally let go of my Gravis Ultrasound MAX sound card a little while ago. It felt like the end of an era for me, even though I had scarcely used the card in recent memory.
The Beginning
What is the Gravis Ultrasound ? Only the finest PC sound card from the classic DOS days. Back in the day (very early 1990s), most consumer PC sound cards were Yamaha OPL FM synthesizers paired with a basic digital to analog converter (DAC). Gravis, a company known for game controllers, dared to break with the dominant paradigm of Sound Blaster clones and create a sound card that had 32 digital channels.
I heard about the GUS sometime in 1992 through one of the dominant online services at the time, Prodigy. Through the message boards, I learned of a promotion with Electronic Arts in which customers could pre-order a GUS at a certain discount along with 2 EA games from a selected catalog (with progressive discounts when ordering more games from the list). I know I got the DOS version of PowerMonger ; I think the other was Night Shift, though that doesn’t seem to be an EA title.Anyway, 1992 saw many maddening delays of the GUS hardware. Finally, reports of GUS shipments began to trickle into the Prodigy message forums. Then one day in November, 1992, mine arrived. Into the 286 machine it went and a valiant attempt at software installation was made. A friend and I fought with the software late into the evening, trying to make this thing work reasonably. I remember grabbing a pair of old headphones sitting near the computer that were used for an ancient (even for the time) portable radio. That was the only means of sound reproduction we had available at that moment. And it still sounded incredible.
After graduating to progressively superior headphones, I would later return to that original pair only to feel my ears were being physically assaulted. Strange, they sounded fine that first night I was trying to make the GUS work. I guess this was my first understanding that the degree to which one is a snobby audiophile is all a matter of hard-earned experience.
Technology
The GUS was powered by something called a GF1 which was supposed to use a technology called wavetable synthesis. In the early days, I thought (and I wasn’t alone in this) that this meant that the GF1 chip had a bunch of digitized instrument samples stored in the ASIC. That wasn’t it.However, it did feature 32 digital channels at a time when most PC audio cards had 2 (plus that Yamaha FM synthesizer). There was some hemming and hawing about how the original GUS couldn’t drive all 32 channels at a full 44.1 kHz ("CD quality") playback rate. It’s true— if 14 channels were enabled, all could be played at 44.1 kHz. Enabling more channels started progressive degradation and with all 32 channels, each was only playing at around 19 kHz. Still, from my emerging game programmer perspective, that allowed for 8-channel tracker music and 6 channels of sound effects, all at the vaunted CD level of quality.
Games and Compatibility
The primary reason to have a discrete sound card was for entertainment applications — ahem, games. GUS support was pretty sketchy out of the gate (ostensibly a major reason for the card’s delay). While many sound cards offered Sound Blaster emulation by basically having the same hardware as Sound Blaster cards, the GUS took a software route towards emulating the SB. To do this required a program called the Sound Blaster Operating System, or SBOS.Oh, how awesome it was to hear the program exclaim "SBOS installed !" And how harshly it grated on your nerves after the 200th time hearing it due to so many reboots and fiddling with options to make your games work. Also, I’ve always wondered if there’s something special about sampling an ’s’ sound — does it strain the sampling frequency range ? Perhaps the phrase was sampled at too low a bitrate because the ’s’ sounds didn’t come through very clearly, which is something you notice after hundreds of iterations when there are 3 ’s’ sounds in the phrase.
Fortunately, SBOS became less relevant with the advent of Mega-Em, a separate emulator which intercepted calls to Roland MIDI systems and routed them to the very capable GUS. Roland-supporting games sounded beautiful.
Eventually, more and more DOS games were released with native Gravis support, sometimes with the help of The Miles Sound System (from our friends at Rad Game Tools — you know, the people behind Smacker and Bink). The library changelog is quite the trip down PC memory lane.
An important area where the GUS shined brightly was that of demos and music trackers. The emerging PC demo scene embraced the powerful GUS (aided, no doubt, by Gravis’ sponsorship of the community) and the coolest computer art and music of the time natively supported the card.
Programming
At this point in my life, I was a budding programmer in high school and was fairly intent on programming video games. So far, I had figured out how to make a few blips using a borrowed Sound Blaster card. I went to great lengths to learn how to program the Gravis Ultrasound.Oh you kids today, with your easy access to information at the tips of your fingers thanks to Google and the broader internet. I had to track down whatever information I could find through a combination of Prodigy message boards and local dialup BBSes and FidoNet message bases. Gravis was initially tight-lipped about programming information for its powerful card, as was de rigueur of hardware companies (something that largely persists to this day). But Gravis eventually saw an opportunity to one-up encumbent Creative Labs and released a full SDK for the Ultrasound. I wanted the SDK badly.
So it was early-mid 1993. Gravis released an SDK. I heard that it was available on their support BBS. Their BBS with a long distance phone number. If memory serves, the SDK was only in the neighborhood of 1.5 Mbytes. That takes a long time to transfer via a 2400 baud modem at a time when long distance phone charges were still a thing and not insubstantial.
Luckily, they also put the SDK on something called an ’FTP site’. Fortunately, about this time, I had the opportunity to get some internet access via the local university.
Indeed, my entire motivation for initially wanting to get on the internet was to obtain special programming information. Is that nerdy enough for you ?
I see that the GUS SDK is still available via the Gravis FTP site. The file GUSDK222.ZIP is dated 1998 and is less than a megabyte.
Next Generation : CD Support
So I had my original GUS by the end of 1992. That was just the first iteration of the Gravis Ultrasound. The next generation was the GUS MAX. When I was ready to get into the CD-ROM era, this was what I wanted in my computer. This is because the GUS MAX had CD-ROM support. This is odd to think about now when all optical drives have SATA interfaces and (P)ATA interfaces before that— what did CD-ROM compatibility mean back then ? I wasn’t quite sure. But in early 1995, I headed over to Computer City (R.I.P.) and bought a new GUS MAX and Sony double-speed CD-ROM drive to install in the family’s PC.
About the "CD-ROM compatibility" : It seems that there were numerous competing interfaces in the early days of CD-ROM technology. The GUS MAX simply integrated 3 different CD-ROM controllers onto the audio card. This was superfluous to me since the Sony drive came with an appropriate controller card anyway, though I didn’t figure out that the extra controller card was unnecessary until after I installed it. No matter ; computers of the day were rife with expansion ports.
The 3 different CD-ROM controllers on the GUS MAX
Explaining The Difference
It was difficult to explain the difference in quality to those who didn’t really care. Sometime during 1995, I picked up a quasi-promotional CD-ROM called "The Gravis Ultrasound Experience" from Babbage’s computer store (remember when that was a thing ?). As most PC software had been distributed on floppy discs up until this point, this CD-ROM was an embarrassment of riches. Tons of game demos, scene demos, tracker music, and all the latest GUS drivers and support software.Further, the CD-ROM had a number of red book CD audio tracks that illustrated the difference between Sound Blaster cards and the GUS. I remember loaning this to a tech-savvy coworker who disbelieved how awesome the GUS was. The coworker took it home, listened to it, and wholly agreed that the GUS audio sounded better than the SB audio in the comparison — and was thoroughly confused because she was hearing this audio emanating from her Sound Blaster. It was the difference between real-time and pre-rendered audio, I suppose, but I failed to convey that message. I imagine the same issue comes up even today regarding real-time video rendering vs., e.g., a pre-rendered HD cinematic posted on YouTube.
Regrettably, I can’t find that CD-ROM anymore which leads me to believe that the coworker never gave it back. Too bad, because it was quite the treasure trove.
Aftermath
According to folklore I’ve heard, Gravis couldn’t keep up as the world changed to Windows and failed to deliver decent drivers. Indeed, I remember trying to keep my GUS in service under Windows 95 well into 1998 but eventually relented and installed some kind of more appropriate sound card that was better supported under Windows.Of course, audio output capability has been standard issue for any PC for at least 10 years and many people aren’t even aware that discrete sound cards still exist. Real-time audio rendering has become less essential as full musical tracks can be composed and compressed into PCM format and delivered with the near limitless space afforded by optical storage.
A few years ago, it was easy to pick up old GUS cards on eBay for cheap. As of this writing, there are only a few and they’re pricy (but perhaps not selling). Maybe I was just viewing during the trough of no value a few years ago.
Nowadays, of course, anyone interested in studying the old GUS or getting a nostalgia fix need only boot up the always-excellent DOSBox emulator which provides remarkable GUS emulation support.
-
Consent management platforms : Keys to compliance and user trust
14 juin, par JoeToday’s marketing managers and data analysts face a tricky balancing act : gaining meaningful customer insights while respecting user privacy. Finding ways to navigate the maze of complex privacy regulations while managing consent at scale can be daunting.
Consent management platforms (CMPs) offer a solution. They allow companies to collect data ethically, manage user consent efficiently, and comply with privacy regulations like Europe’s General Data Protection Regulation (GDPR) and the California Consumer Privacy Act (CCPA).
This guide explains everything you need to know about CMPs : how they function, why they’re essential for data governance, and how they work hand-in-hand with analytics platforms to promote transparency and build trust with users.
What is a consent management platform (CMP) and what is it for ?
A consent management platform (CMP) helps organisations collect, organise, and store user consent for personal data processing purposes. In short, it’s a tool that ensures data collection respects user privacy and complies with regulations like the GDPR and CCPA.
Without a CMP, businesses could face hefty fines and penalties for violating data privacy laws in different parts of the world. This shows how vital these tools are to all modern businesses.
How do consent management platforms work ?
CMPs give users a clear and straightforward way to provide explicit consent for data collection. These platforms manage both the technical aspects of consent storage and the user experience on your site or app.
Here’s a simplified breakdown :
- Cookie consent banners : The CMP displays a banner whenever a user visits your website. This banner explains the types of personal information collected and for what purpose.
- User choice : The user can accept or reject cookies and trackers. They can often customise their preferences to choose which specific data types they’re willing to share.
- Preference storage : The CMP stores the user’s choices. This information helps ensure that you only collect and process the permitted data.
- Integration with other systems : CMPs integrate with other systems, such as analytics platforms and advertising networks, to ensure that data collection and processing comply with the user’s choices throughout the customer experience.
A key feature of CMPs is their role in shaping privacy policy design. This design encompasses the layout, visual elements, and cues employed to seek user consent.
A recent study by Karlstad University in Sweden showed that privacy policy design significantly influences user comprehension and willingness to disclose information. In other words, it affects consent rates considerably and is key to enhancing data collection.
Importance of consent management for compliance
As the world becomes increasingly interconnected, consent management is taking centre stage. Although it applies to all technologies and systems that gather or handle personal data, few instances are as relevant as smart homes.
Smart home devices have unique access to our personal spaces and private lives. They represent a unique challenge to consent management since one person is potentially granting access to personal data from themselves and other people who may be inside or around the house.
A 2023 study by the University College London and the University of Oxford pointed out that clear design principles and granular, contextual permission structures are essential in these situations.
However, consent management isn’t just best practice. It’s a widespread legal requirement. Not meeting these requirements can result in hefty penalties and reputational damage to your organisation.
Consent management under GDPR
The European Union’s GDPR is a data protection law applicable to organisations that process the personal data of individuals residing in the European Economic Area (EEA). It’s based on the principle of opting in.
The GDPR is one of the strongest data privacy laws globally. For non-compliance, fines can be up to €20 million or 4% of the company’s total global turnover (whichever is higher).
It’s also one of the most heavily enforced privacy laws. According to enforcementtracker.com, Meta was fined €1.2 billion in 2023, with GDPR fines reaching over €2 billion that year alone. In the UK, the largest GDPR fine is €22.05 million, according to Statista. It pays to comply.
The GDPR has specific rules around consent, including that it must be :
- Freely given : Users must not be pressured or coerced.
- Specific : Must be given for specific data processing purposes.
- Informed : Users must be provided with clear and concise information.
- Unambiguous : Permission must be granted through clear and affirmative action, such as checking a box or tapping a button.
CMPs help you meet these requirements by providing a transparent and user-friendly way to obtain and manage consent.
Consent management under CCPA
The CCPA is another privacy protection law for businesses collecting personal information from California residents. It grants Californians the right to know what data is being collected about them, to prevent it from being sold, and to request its deletion.
CMPs support CCPA compliance by enabling users to exercise their rights and ensuring transparent data collection practices.
Managing consent under other regulatory frameworks
In addition to the GDPR and CCPA, numerous other privacy regulations can impact your organisation. These regulations include :
- The COPPA in the US
- Brazil’s LGPD
- Japan’s APPI
- Canada’s PIPEDA.
- Australia’s Privacy Act 1988
A CMP will help streamline the process by providing a clear, practical framework to ensure you meet all applicable requirements.
Key features to look for in a CMP
Choosing the right CMP is crucial for global business.
Here are some key features to consider :
Custom banners
Consent banners are often among users’ first digital interactions with your brand. It should be clear, concise and visually appealing. Look for a CMP that allows you to :
- Customise the banner’s design to match your website’s branding and aesthetics.
- Control the banner’s positioning for optimal visibility.
End-user management tools
The CMP should also offer a user-friendly interface allowing visitors to grant, manage and withdraw consent.
This includes customisable banners, granular permissions, and a preference centre. The latter is a dedicated space where users can manage their preferences anytime.
Integration capabilities with existing systems
The CMP should integrate with your existing technology stack, including your analytics platform, marketing automation tools and CRM. This integration ensures a smooth workflow and prevents data silos.
How to select the right CMP for your organisation
To find the perfect CMP, focus on your specific needs and priorities. Here’s a step-by-step guide to help you make an informed decision :
Assessing organisational needs and goals
Start by clearly defining your organisation’s requirements. Consider the following :
- Types of data collected : What personal data do you collect (for example, cookies, IP addresses, location data) ?
- Compliance requirements : Which privacy regulations must you comply with (GDPR, CCPA, COPPA) ?
- Website or app complexity : How complex is your website or app in terms of user interactions and data collection points ?
- Budget : How much are you willing to invest in a CMP ?
Comparing features and pricing
Once you thoroughly understand your needs, you can compare the features and pricing of various CMPs. Look for key features like :
- Customisable banners
- Granular options
- Preference centre
- Integration with existing systems
- Analytics and reporting
Once you’ve shortlisted a few options, compare the pricing and choose the best value for your budget. Take advantage of free trials before committing to a paid plan.
Checking verified user reviews
Read user reviews on platforms like G2 or Trustpilot to get an idea of the strengths and weaknesses of different CMPs. Look for reviews from similar organisations regarding size, industry and compliance requirements.
Integration with a privacy-focused analytics platform
A consent management platform acts as the bridge between your users and your analytics and marketing teams. It ensures user preferences are communicated to your analytics setup, so data collection and analysis align with their choices and comply with privacy regulations.
Finding a consent manager integration that works with your analytics setup is essential for businesses.
Top five consent management platforms
The CMP market is pretty competitive, with many players providing excellent solutions. According to Emergen Research, it was valued at $320.9 million in 2021 and is growing at 21.2%.
Here are five of our top choices
1. usercentrics
usercentrics is a comprehensive CMP with customisable banners, granular consent options and a preference centre.
usercentrics geolocation rulesets page (Source : Usercentrics)
This Google-certified CMP allows you to create global and regional consent rules to ensure compliance with local regulations like GDPR, CCPA and LGPD. For a smooth implementation, usercentrics provides access to a knowledgeable support team and a dedicated customer success executive.
It’s worth noting that Usercentrics is the CMP we use here at Matomo. It helps us in our mission to collect and analyse data ethically and with a privacy-first mindset.
- Key features : Customisable banners, granular permissions, cross-domain and cross-device capabilities, automatic website scans, reporting and analytics.
- Pricing : Usercentrics offers a free plan and four paid subscription plans from €7 to €50 per month.
2. Osano
Osano is a user-friendly CMP focusing on transparency and ease of use.
Osano’s main dashboard (Source : Osano)
Osano can scan websites for tracking technologies without impacting the user experience.
- Key features : Customisable banners, multi-language support, granular consent options, a preference centre and access to a knowledgeable team of compliance specialists.
- Pricing : Osano offers a self-service free plan and a paid plan at $199 per month.
3. Cookiebot
Cookiebot is another popular CMP with numerous integration options, including Matomo and other analytics tools.
Cookiebot consent banner options (Source : Cookiebot)
- Key features : A cookie scanner, a privacy trigger or button allowing users to change their consent settings, a consent management API and advanced analytics.
- Pricing : Cookiebot offers a free plan and paid plans ranging from €7 to €50 per month.
4. CookieYes
CookieYes is well-suited for small businesses and websites with basic privacy needs.
CookieYes cookie banner options (Source : CookieYes)
It offers various features, including multilingual support, geo-targeting, privacy policy generation, and a preference centre. CookieYes also integrates with analytics and CMS tools, making it easy to implement as part of your stack.
- Key features : Customisable consent banners, granular consent options, preference centre, integration with Matomo, reporting and analytics.
- Pricing : You can use CookieYes for free or subscribe to one of their three paid plans, which range from $10 to $55 per month.
5. Tarte au Citron
Tarte au Citron is an open-source, lightweight, and customisable CMP developed in France.
(Source : Tarte au Citron)
Its focus is on transparency and user experience. It provides many features free of charge, but many do require some technical knowledge to deploy. There’s also a paid subscription with ongoing support and faster implementation.
Tarte au Citron integrates with Matomo, which is also open-source. If you’re building an open-source stack for your analytics, Matomo and Tarte au Citron make an excellent pair.
- Key features : Open-source, customisable consent banners, integration with Matomo, works with over 220 services.
- Pricing : You can deploy the open-source core for free, but Tarte au Citron offers three paid licenses starting at €190 for one year and reaching €690 for a lifetime license.
How to implement cookie consent the right way
Implementing cookie consent requires precision, time and effort. But doing it wrong can result in significant legal penalties and severe reputational damage, eroding user trust and impacting your brand’s standing. Here are the key dos and don’ts of consent :
Provide clear and concise information
Use plain language that is easy for anyone to understand. Avoid using technical terms or legal jargon that may confuse users.
Prioritise transparency
Be upfront about your data collection practices. Clearly state what data you collect, how you use it and who you share it with. Provide links to your privacy and cookie policies for users who want to learn more.
Offer granular control
Give users detailed control over as many of their cookie preferences as possible. Allow them to choose which categories of tracking cookies they consent to, such as strictly necessary, performance and marketing cookies.
Implement user-friendly banners
Ensure banners are prominently displayed, easy to understand, and use clear and concise language. Also, make sure they’re accessible to all users, including those with disabilities.
Respect “do not track” settings
It’s essential to honour users’ choices when they enable their “do not track” browser setting.
Document consent
Maintain a record of user consent. This will help you demonstrate compliance with data privacy regulations and provide evidence of user consent in case of an audit or investigation.
Regularly review and update consent policies
Review and update your customer consent policies regularly to ensure they comply with evolving data privacy regulations and reflect your current data collection practices.
Cookie consent pitfalls to avoid
Here are some common pitfalls to avoid that may lead to legal penalties, loss of user trust or inaccurate analytics :
- Avoid lengthy and complicated explanations. Overwhelming users with dense legal jargon or overly technical details can lead to consent fatigue and reduce the likelihood of informed consent.
- Don’t force users to accept all cookies or none. Blanket consent options violate user autonomy and fail to comply with regulations like the GDPR.
- Don’t make information about your data collection practices hard to find. Hidden or buried privacy policies breed suspicion and erode trust.
- Avoid pre-checking all cookie consents. Pre-checked boxes imply consent without explicit user action, which is not compliant with GDPR and similar regulations. Users must actively opt in, not out.
Emerging consent management trends
Consent management is constantly evolving and driven by new technologies, regulations, and user expectations. Here are some emerging trends to watch out for in the short term :
- Increased automation : AI and machine learning are helping automate consent management processes, making them more efficient and effective.
- Enhanced user experience : CMPs are becoming more user-friendly, focusing on providing an intuitive experience.
- Privacy-preserving analytics : CMPs are being integrated with privacy-preserving analytics platforms, such as Matomo, to enable organisations to gain insights into user behaviour without compromising privacy.
- Google Consent Mode : In 2024, Google rolled out Consent Mode v2 to align with the Digital Markets Act. Due to upcoming privacy regulations, more versions may be coming soon.
The Privacy Governance Report 2024 also highlights the increasing complexity of managing data privacy, with more than four in five privacy professionals taking on additional responsibilities in their existing roles. This trend will likely continue in the coming years as more privacy laws are enacted.
Addressing upcoming privacy regulations
Data privacy and user consent requirements continue to emerge and evolve. Businesses must stay informed and adapt their practices accordingly.
In 2025, several new privacy regulations are going into effect, including :
- New state-level privacy laws in eight US states :
- Delaware (1 January 2025)
- Iowa (1 January 2025)
- Nebraska (1 January 2025)
- New Hampshire (1 January 2025)
- New Jersey (15 January 2025)
- Tennessee (1 July 2025)
- Minnesota (31 July 2025)
- Maryland (1 October 2025)
- The EU’s Artificial Intelligence Act (which will be implemented from 1 August 2024 through 2 August 2026) and other AI-focused regulations.
- The UK Adequacy Decision Review has a deadline of 27 December 2025.
Organisations that collect, process or otherwise handle data from Europe and the above-named US states should proactively prepare for these changes by :
- Conducting regular privacy impact assessments
- Reviewing consent mechanisms regularly
- Implementing data minimisation strategies
- Providing user-friendly privacy controls
Future-proofing your consent management strategy
CMPs are essential for managing consent preferences, protecting user privacy, and earning customers’ trust through transparency and ethical data practices.
When choosing a CMP, you should consider key features such as integration capabilities, customisation options and user-friendly interfaces.
Integrating a CMP with a privacy-first analytics solution like Matomo allows you to collect and analyse data in a way that’s compliant and respectful of user preferences. This combination helps maintain data integrity while demonstrating a strong commitment to privacy.
Start your 21-day free trial today.
-
Opencv crosscompile with ffmpeg and other 3rdparty for arm board
16 juin 2017, par Little ToothAfter buliding Qt5.5.1 for my arm board sucessfully, I am taking up to crosscompile opencv. Here are the steps :
First, I crosscompile 3rdparty :
a.libz
lmk@lmk-virtual-machine:/home/newdisk$ sudo tar -zvxf zlib-1.2.8.tar.gz
lmk@lmk-virtual-machine:/home/newdisk$ cd zlib-1.2.8
lmk@lmk-virtual-machine:/home/newdisk/zlib-1.2.8$ sudo ./configure --prefix=/home/newdisk/optnew/opencv-rely -shared
lmk@lmk-virtual-machine:/home/newdisk/zlib-1.2.8$ sudo vi Makefileand etit Makefile in some details :
#Makefile
CC=/home/newdisk/optnew/opt/FriendlyARM/toolschain/4.5.1/bin/arm-none-linux-gnueabi-gcc
LDSHARED= /home/newdisk/optnew/opt/FriendlyARM/toolschain/4.5.1/bin/arm-none-linux-gnueabi-gcc -shared -Wl,-soname,libz.so.1,--version-script,zlib.map
AR=/home/newdisk/optnew/opt/FriendlyARM/toolschain/4.5.1/bin/arm-none-linux-gnueabi-ar
RANLIB=arm-linux-ranlibthe last step is run make and make install :
lmk@lmk-virtual-machine:/home/newdisk/zlib-1.2.8$ sudo make
lmk@lmk-virtual-machine:/home/newdisk/zlib-1.2.8$ sudo make installb.libjpeg
lmk@lmk-virtual-machine:/home/newdisk$ sudo tar -zvxf jpegsrc.v9.tar.gz
lmk@lmk-virtual-machine:/home/newdisk$ cd jpeg-9
lmk@lmk-virtual-machine:/home/newdisk/jpeg-9$ sudo CC=/home/newdisk/optnew/opt/FriendlyARM/toolschain/4.5.1/bin/arm-none-linux-gnueabi-gcc ./configure --host=arm-linux --prefix=/home/newdisk/optnew/opencv-rely --enable-shared --enable-static
lmk@lmk-virtual-machine:/home/newdisk/jpeg-9$ sudo make
lmk@lmk-virtual-machine:/home/newdisk/jpeg-9$ sudo make installc.libpng
lmk@lmk-virtual-machine:/home/newdisk$ sudo xz -d libpng-1.6.29.tar.xz
lmk@lmk-virtual-machine:/home/newdisk$ sudo tar -xvf libpng-1.6.29.tar
lmk@lmk-virtual-machine:/home/newdisk$ cd libpng-1.6.29
lmk@lmk-virtual-machine:/home/newdisk/libpng-1.6.29$ sudo CC=/home/newdisk/optnew/opt/FriendlyARM/toolschain/4.5.1/bin/arm-none-linux-gnueabi-gcc ./configure --host=arm-linux --prefix=/home/newdisk/optnew/opencv-rely --enable-shared --enable-static
lmk@lmk-virtual-machine:/home/newdisk/libpng-1.6.29$ sudo make
lmk@lmk-virtual-machine:/home/newdisk/libpng-1.6.29$ sudo make installd.yasm
lmk@lmk-virtual-machine:/home/newdisk$ sudo tar -zvxf yasm-1.3.0.tar.gz
lmk@lmk-virtual-machine:/home/newdisk$ cd yasm-1.3.0
lmk@lmk-virtual-machine:/home/newdisk/yasm-1.3.0$ sudo CC=/home/newdisk/optnew/opt/FriendlyARM/toolschain/4.5.1/bin/arm-none-linux-gnueabi-gcc ./configure --prefix=/home/newdisk/optnew/opencv-rely --host=arm-linux
lmk@lmk-virtual-machine:/home/newdisk/yasm-1.3.0$ sudo make
lmk@lmk-virtual-machine:/home/newdisk/yasm-1.3.0$ sudo make installe.libx264
lmk@lmk-virtual-machine:/home/newdisk$ sudo tar -jxvf last_x264.tar.bz2
lmk@lmk-virtual-machine:/home/newdisk$ cd x264-snapshot-20170612-2245
lmk@lmk-virtual-machine:/home/newdisk/x264-snapshot-20170612-2245$ sudo CC=/home/newdisk/optnew/opt/FriendlyARM/toolschain/4.5.1/bin/arm-none-linux-gnueabi-gcc ./configure --enable-shared --host=arm-linux --disable-asm --prefix=/home/newdisk/optnew/opencv-rely
lmk@lmk-virtual-machine:/home/newdisk/x264-snapshot-20170612-2245$ sudo make
lmk@lmk-virtual-machine:/home/newdisk/x264-snapshot-20170612-2245$ sudo make installf.libxvid
lmk@lmk-virtual-machine:/home/newdisk$ cd xvidcore-1.3.3
lmk@lmk-virtual-machine:/home/newdisk/xvidcore-1.3.3$ cd build/generic
lmk@lmk-virtual-machine:/home/newdisk/xvidcore-1.3.3/build/generic$ sudo CC=/home/newdisk/optnew/opt/FriendlyARM/toolschain/4.5.1/bin/arm-none-linux-gnueabi-gcc ./configure --prefix=/home/newdisk/optnew/opencv-rely --host=arm-linux --disable-assembly
lmk@lmk-virtual-machine:/home/newdisk/xvidcore-1.3.3/build/generic$ sudo make
lmk@lmk-virtual-machine:/home/newdisk/xvidcore-1.3.3/build/generic$ sudo make installg.ffmpeg
lmk@lmk-virtual-machine:/home/newdisk$ sudo tar -jvxf ffmpeg-3.3.2.tar.bz2
lmk@lmk-virtual-machine:/home/newdisk$ cd ffmpeg-3.3.2
lmk@lmk-virtual-machine:/home/newdisk/ffmpeg-3.3.2$
sudo ./configure --prefix=/home/newdisk/optnew/opencv-rely --enable-shared --disable-static --enable-gpl --enable-cross-compile --arch=arm --disable-stripping --target-os=linux --enable-libx264 --enable-libxvid --cc=/home/newdisk/optnew/opt/FriendlyARM/toolschain/4.5.1/bin/arm-none-linux-gnueabi-gcc --enable-swscale --extra-ldflags=-L/home/newdisk/optnew/opencv-rely/lib --extra-cflags=-I/home/newdisk/optnew/opencv-rely/include
lmk@lmk-virtual-machine:/home/newdisk/ffmpeg-3.3.2$ sudo make
lmk@lmk-virtual-machine:/home/newdisk/ffmpeg-3.3.2$ sudo make installThere is no problem in 3rdparty crosscompile.
Next, opencv crosscompile :lmk@lmk-virtual-machine:/home/newdisk$ sudo unzip opencv-3.1.0.zip
lmk@lmk-virtual-machine:/home/newdisk$ cd opencv-3.1.0
lmk@lmk-virtual-machine:/home/newdisk/opencv-3.1.0$ sudo mkdir BuildOpencv
lmk@lmk-virtual-machine:/home/newdisk/opencv-3.1.0$ cd BuildOpencv
lmk@lmk-virtual-machine:/home/newdisk/opencv-3.1.0/BuildOpencv$ sudo vim toolchain.cmake
#toolchain.cmake
###########user defined#############
set( CMAKE_SYSTEM_NAME Linux )
set( CMAKE_SYSTEM_PROCESSOR arm )
set( CMAKE_C_COMPILER /home/newdisk/optnew/opt/FriendlyARM/toolschain/4.5.1/bin/arm-linux-gcc )
set( CMAKE_CXX_COMPILER /home/newdisk/optnew/opt/FriendlyARM/toolschain/4.5.1/bin/arm-linux-g++ )
###########user defined#############
set( CMAKE_FIND_ROOT_PATH /home/newdisk/optnew/opencv-rely)
set( CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER )
set( CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set( CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
######################################Then I run cmake :
lmk@lmk-virtual-machine:/home/newdisk/opencv-3.1.0/BuildOpencv$ sudo cmake -DCMAKE_TOOLCHAIN_FILE=toolchain.cmake ../
Here is the result:
-- Detected version of GNU GCC: 45 (405)
-- Found ZLIB: /home/newdisk/optnew/opencv-rely/lib/libz.so (found suitable version "1.2.8", minimum required is "1.2.3")
-- Could NOT find TIFF (missing: TIFF_LIBRARY TIFF_INCLUDE_DIR)
-- Could NOT find Jasper (missing: JASPER_LIBRARIES) (found version "1.900.1")
-- Found ZLIB: /home/newdisk/optnew/opencv-rely/lib/libz.so (found version "1.2.8")
-- checking for module 'gtk+-3.0'
-- package 'gtk+-3.0' not found
-- checking for module 'gstreamer-base-1.0'
-- package 'gstreamer-base-1.0' not found
-- checking for module 'gstreamer-video-1.0'
-- package 'gstreamer-video-1.0' not found
-- checking for module 'gstreamer-app-1.0'
-- package 'gstreamer-app-1.0' not found
-- checking for module 'gstreamer-riff-1.0'
-- package 'gstreamer-riff-1.0' not found
-- checking for module 'gstreamer-pbutils-1.0'
-- package 'gstreamer-pbutils-1.0' not found
-- checking for module 'gstreamer-base-0.10'
-- package 'gstreamer-base-0.10' not found
-- checking for module 'gstreamer-video-0.10'
-- package 'gstreamer-video-0.10' not found
-- checking for module 'gstreamer-app-0.10'
-- package 'gstreamer-app-0.10' not found
-- checking for module 'gstreamer-riff-0.10'
-- package 'gstreamer-riff-0.10' not found
-- checking for module 'gstreamer-pbutils-0.10'
-- package 'gstreamer-pbutils-0.10' not found
-- Looking for linux/videodev.h
-- Looking for linux/videodev.h - found
-- Looking for linux/videodev2.h
-- Looking for linux/videodev2.h - found
-- Looking for sys/videoio.h
-- Looking for sys/videoio.h - not found
-- checking for module 'libavresample'
-- package 'libavresample' not found
-- Looking for libavformat/avformat.h
-- Looking for libavformat/avformat.h - not found
-- Looking for ffmpeg/avformat.h
-- Looking for ffmpeg/avformat.h - not found
-- checking for module 'libgphoto2'
-- package 'libgphoto2' not found
-- Could NOT find Doxygen (missing: DOXYGEN_EXECUTABLE)
-- To enable PlantUML support, set PLANTUML_JAR environment variable or pass -DPLANTUML_JAR=<filepath> option to cmake
-- Found PythonInterp: /usr/bin/python2.7 (found suitable version "2.7.6", minimum required is "2.7")
-- Could NOT find PythonLibs (missing: PYTHON_LIBRARIES) (found suitable version "2.7.6", minimum required is "2.7")
-- Cannot probe for Python/Numpy support (because we are cross-compiling OpenCV)
-- If you want to enable Python/Numpy support, set the following variables:
-- PYTHON2_INCLUDE_PATH
-- PYTHON2_LIBRARIES
-- PYTHON2_NUMPY_INCLUDE_DIRS
-- PYTHON3_INCLUDE_PATH
-- PYTHON3_LIBRARIES
-- PYTHON3_NUMPY_INCLUDE_DIRS
-- Found PythonInterp: /usr/bin/python3.4 (found suitable version "3.4.3", minimum required is "3.4")
-- Could NOT find PythonLibs (missing: PYTHON_LIBRARIES) (Required is at least version "3.4")
-- Cannot probe for Python/Numpy support (because we are cross-compiling OpenCV)
-- If you want to enable Python/Numpy support, set the following variables:
-- PYTHON2_INCLUDE_PATH
-- PYTHON2_LIBRARIES
-- PYTHON2_NUMPY_INCLUDE_DIRS
-- PYTHON3_INCLUDE_PATH
-- PYTHON3_LIBRARIES
-- PYTHON3_NUMPY_INCLUDE_DIRS
-- Could NOT find JNI (missing: JAVA_AWT_LIBRARY JAVA_JVM_LIBRARY JAVA_INCLUDE_PATH JAVA_INCLUDE_PATH2 JAVA_AWT_INCLUDE_PATH)
-- Could NOT find Matlab (missing: MATLAB_MEX_SCRIPT MATLAB_INCLUDE_DIRS MATLAB_ROOT_DIR MATLAB_LIBRARIES MATLAB_LIBRARY_DIRS MATLAB_MEXEXT MATLAB_ARCH MATLAB_BIN)
--
-- General configuration for OpenCV 3.1.0
=====================================
-- Version control: unknown
--
-- Platform:
-- Host: Linux 3.16.0-77-generic i686
-- Target: Linux arm
-- CMake: 2.8.12.2
-- CMake generator: Unix Makefiles
-- CMake build tool: /usr/bin/make
-- Configuration: Release
--
-- C/C++:
-- Built as dynamic libs?: YES
-- C++ Compiler: /home/newdisk/optnew/opt/FriendlyARM/toolschain/4.5.1/bin/arm-linux-g++ (ver 4.5.1)
-- C++ flags (Release): -fsigned-char -W -Wall -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wundef -Winit-self -Wpointer-arith -Wshadow -Wsign-promo -fdiagnostics-show-option -pthread -fomit-frame-pointer -ffunction-sections -fvisibility=hidden -fvisibility-inlines-hidden -O3 -DNDEBUG -DNDEBUG
-- C++ flags (Debug): -fsigned-char -W -Wall -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wundef -Winit-self -Wpointer-arith -Wshadow -Wsign-promo -fdiagnostics-show-option -pthread -fomit-frame-pointer -ffunction-sections -fvisibility=hidden -fvisibility-inlines-hidden -g -O0 -DDEBUG -D_DEBUG
-- C Compiler: /home/newdisk/optnew/opt/FriendlyARM/toolschain/4.5.1/bin/arm-linux-gcc
-- C flags (Release): -fsigned-char -W -Wall -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wmissing-prototypes -Wstrict-prototypes -Wundef -Winit-self -Wpointer-arith -Wshadow -fdiagnostics-show-option -pthread -fomit-frame-pointer -ffunction-sections -fvisibility=hidden -O3 -DNDEBUG -DNDEBUG
-- C flags (Debug): -fsigned-char -W -Wall -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wmissing-prototypes -Wstrict-prototypes -Wundef -Winit-self -Wpointer-arith -Wshadow -fdiagnostics-show-option -pthread -fomit-frame-pointer -ffunction-sections -fvisibility=hidden -g -O0 -DDEBUG -D_DEBUG
-- Linker flags (Release):
-- Linker flags (Debug):
-- Precompiled headers: YES
-- Extra dependencies: /home/newdisk/optnew/opencv-rely/lib/libjpeg.so /home/newdisk/optnew/opencv-rely/lib/libpng.so /home/newdisk/optnew/opencv-rely/lib/libz.so gtk-x11-2.0 gdk-x11-2.0 atk-1.0 gio-2.0 pangoft2-1.0 pangocairo-1.0 gdk_pixbuf-2.0 cairo pango-1.0 fontconfig gobject-2.0 freetype gthread-2.0 glib-2.0 dc1394 v4l1 v4l2 avcodec avformat avutil swscale dl m pthread rt
-- 3rdparty dependencies: libwebp libtiff libjasper IlmImf
--
-- OpenCV modules:
-- To be built: core flann imgproc ml photo video imgcodecs shape videoio highgui objdetect superres ts features2d calib3d stitching videostab
-- Disabled: world
-- Disabled by dependency: -
-- Unavailable: cudaarithm cudabgsegm cudacodec cudafeatures2d cudafilters cudaimgproc cudalegacy cudaobjdetect cudaoptflow cudastereo cudawarping cudev java python2 python3 viz
--
-- GUI:
-- QT: NO
-- GTK+ 2.x: YES (ver 2.24.23)
-- GThread : YES (ver 2.40.2)
-- GtkGlExt: NO
-- OpenGL support: NO
-- VTK support: NO
--
-- Media I/O:
-- ZLib: /home/newdisk/optnew/opencv-rely/lib/libz.so (ver 1.2.8)
-- JPEG: /home/newdisk/optnew/opencv-rely/lib/libjpeg.so (ver 90)
-- WEBP: build (ver 0.3.1)
-- PNG: /home/newdisk/optnew/opencv-rely/lib/libpng.so (ver 1.6.29)
-- TIFF: build (ver 42 - 4.0.2)
-- JPEG 2000: build (ver 1.900.1)
-- OpenEXR: build (ver 1.7.1)
-- GDAL: NO
--
-- Video I/O:
-- DC1394 1.x: NO
-- DC1394 2.x: YES (ver 2.2.1)
-- FFMPEG: YES
-- codec: YES (ver 54.35.1)
-- format: YES (ver 54.20.4)
-- util: YES (ver 52.3.0)
-- swscale: YES (ver 2.1.1)
-- resample: NO
-- gentoo-style: YES
-- GStreamer: NO
-- OpenNI: NO
-- OpenNI PrimeSensor Modules: NO
-- OpenNI2: NO
-- PvAPI: NO
-- GigEVisionSDK: NO
-- UniCap: NO
-- UniCap ucil: NO
-- V4L/V4L2: Using libv4l1 (ver 0.8.8) / libv4l2 (ver 0.8.8)
-- XIMEA: NO
-- Xine: NO
-- gPhoto2: NO
--
-- Parallel framework: pthreads
--
-- Other third-party libraries:
-- Use IPP: NO
-- Use VA: NO
-- Use Intel VA-API/OpenCL: NO
-- Use Eigen: NO
-- Use Cuda: NO
-- Use OpenCL: YES
-- Use custom HAL: NO
--
-- OpenCL:
-- Version: dynamic
-- Include path: /home/newdisk/opencv-3.1.0/3rdparty/include/opencl/1.2
-- Use AMDFFT: NO
-- Use AMDBLAS: NO
--
-- Python 2:
-- Interpreter: /usr/bin/python2.7 (ver 2.7.6)
--
-- Python 3:
-- Interpreter: /usr/bin/python3.4 (ver 3.4.3)
--
-- Python (for build): /usr/bin/python2.7
--
-- Java:
-- ant: NO
-- JNI: NO
-- Java wrappers: NO
-- Java tests: NO
--
-- Matlab: Matlab not found or implicitly disabled
--
-- Documentation:
-- Doxygen: NO
-- PlantUML: NO
--
-- Tests and samples:
-- Tests: YES
-- Performance tests: YES
-- C/C++ Examples: NO
--
-- Install path: /home/newdisk/opencv-3.1.0/BuildOpencv/install
--
-- cvconfig.h is in: /home/newdisk/opencv-3.1.0/BuildOpencv
-- -----------------------------------------------------------------
--
-- Configuring done
-- Generating done
-- Build files have been written to: /home/newdisk/opencv-3.1.0/BuildOpencv
</filepath>After configuring and generating, run cmake-gui :
lmk@lmk-virtual-machine:/home/newdisk/opencv-3.1.0/BuildOpencv$ sudo cmake-gui
Src:/home/newdisk/opencv-3.1.0
Build:/home/newdisk/opencv-3.1.0/BuildOpencv
CMAKE_INSTALL_PREFIX:/home/newdisk/optnew/opencv-arm
Don't choose these items:
WITH_CUDA
WITH_GTK
WITH_1394
WITH_GSTREAMER
WITH_LIBV4L
WITH_TIFF
BUILD_OPENEXR
WITH_OPENEXR
WITH_OPENCL
Configure and generate.
lmk@lmk-virtual-machine:/home/newdisk/opencv-3.1.0/BuildOpencv$ sudo vi CMakeCache.txt
#CMakeCache.txt
//Flags used by the linker.
CMAKE_EXE_LINKER_FLAGS:STRING=-lpthread -lrt
lmk@lmk-virtual-machine:/home/newdisk/opencv-3.1.0/BuildOpencv$ sudo makeFianlly,I got these errors :
[ 27%] Building CXX object modules/videoio/CMakeFiles/opencv_videoio.dir/src/cap_mjpeg_decoder.cpp.o
[ 27%] Building CXX object modules/videoio/CMakeFiles/opencv_videoio.dir/src/cap_v4l.cpp.o
[ 27%] Building CXX object modules/videoio/CMakeFiles/opencv_videoio.dir/src/cap_ffmpeg.cpp.o
In file included from /home/newdisk/opencv-3.1.0/modules/videoio/src/cap_ffmpeg_impl.hpp:65:0,
from /home/newdisk/opencv-3.1.0/modules/videoio/src/cap_ffmpeg.cpp:45:
/home/newdisk/opencv-3.1.0/modules/videoio/src/ffmpeg_codecs.hpp:77:36: fatal error: libavformat/avformat.h: No such file or directory
compilation terminated.
make[2]: *** [modules/videoio/CMakeFiles/opencv_videoio.dir/src/cap_ffmpeg.cpp.o] Error 1
make[1]: *** [modules/videoio/CMakeFiles/opencv_videoio.dir/all] Error 2
make: *** [all] Error 2While the file libavformat/avformat.h does exits in my directory
/home/newdisk/optnew/opencv-rely/includeWhy can cmake find lib directory
-- Found ZLIB: /home/newdisk/optnew/opencv-rely/lib/libz.so (found suitable version "1.2.8", minimum required is "1.2.3")
but cannot find include directory ?
/home/newdisk/optnew/opencv-rely/include
Do you have any idea ?