Quantcast
Channel: am7xxx
Viewing all 11 articles
Browse latest View live

On USB projectors, linux and libam7xxx

$
0
0

I was looking into compact/mini/pico/handheld projectors, and I obviously wanted something I could use under GNU/linux, there were basically two choices:

  1. Pick up a projector with VGA/HDMI: Operating System independent.
  2. Pick up a USB projector: shipped only with drivers for MS Windows (and sometimes for MacOSX too).

Since the first choice was more expensive and I verified that writing a driver for the second case wasn't too hard, I picked up an Acer C110, I paid it about 160 €, but you can find it even cheaper somewhere else, grr.

AM7X or AM7XXX

The C110 is based on an Actions Micro AM7212P IC and uses USB bulk transfers with a simple packet based protocol on top to exchange data and commands to and from a host system and the AM7XXX chip.

Other projectors using the same protocol are:

These projectors use the USB Vendor and Product IDs 1de1:1101 in mass storage mode and 1de1:c101 in display mode.

Some DPFs too (from Hannspree for instance) are known to use these chips but I don't know yet if they can be put in USB display mode.

I will refer to these devices as either AM7X or AM7XXX devices.

Open Source driver for AM7XXX devices

Reto Schneider and I are reverse engineering the USB protocol used by these devices, using USB dumps and disassembling the Windows device driver, and a basic but already usable library to communicate with those AM7x based projectors can be found in libam7xxx. Reto was the first to start working on that, in the form of acerc11xdrv.

So you can now get these projectors to work wherever libusb-1.0 works, that means you can use them with your phone if it can run GNU/Linux for instance, or even Android/Linux but I don't have an Android device to verify that.

For now all the communication about the development is happening on the #am7xxx IRC Channel on the Freenode Network, come find us, and let us know if you want to help: like hosting a mailing list for us, or sponsoring some hardware (USB projectors you want to use freely or devices you want to use these projectors with).

Side note: the user manuals of these devices sometimes refer to the functionality of displaying images over USB as Display over USB (or DoUSB), this definition is used on a lot of projectors but I don't know if it refers always to the same protocol/mechanism to send images over USB.

Linux running ON other projectors

Incidentally, when I was doing my pre-purchase market research, I ran into several projectors which —unsurprisingly— are running a Linux system themselves (linux kernel, busybox, etc.), here is a summary of what I found out:

  • Samsung SP-H03 (not based on AM7X): the firmware image can be downloaded here, and Samsung is providing the source code for the Free Software used in it, you can find it on opensource.samsung.com (AFAIR Harald Welte gave them some directions about GPL compliance, right?).

    This could be an interesting device if you want to run your own code on a projector.

  • Acer K330: based on a chip of the same am7x family as the C110.

    The firmware image is available for download and it does contain the Linux kernel and other Open Source software, but the source code is not available, neither Linux or the GPL are mentioned in the downloadable documentation; I am going to do more research on this later to see if Acer is in compliance with the GPL.

Open Projectors?

Having the ability of processing an image before projecting it —either on an external system, or on the projector itself— opens up to a lot of possibilities, and I can foresee an increase of AR applications using projectors; so, do you think there is enough interest for an Open Projectors project? A place where we can share the techniques (keystone correction, or some more sophisticate anamorphic transformations by the means of a Camera-Projector system) and the Open Source software implementing them, all in a single place.

Get in touch if you have any ideas about that.


An Open Source driver for USB pico projectors

$
0
0

This is a follow-up to the previous story about am7xxx devices.

The 0.1.2 stable release of libam7xxx is out, and some binary Debian packages are available as well. Check out also the am7xxx page on Ohloh.

The devices supported in this release are:

This release comes with a display daemon based on libav, it is called am7xxx-play and you can use it to:

  • display your X desktop:
    am7xxx-play -f x11grab -i :0.0
    
  • display the content of a single X window with a script like this one:
    #!/bin/sh
    
    set -e
    
    WIN_INFO="$(xwininfo)"
    
    X=$(echo "$WIN_INFO" | sed -n -e "/^[[:space:]]*Absolute upper-left X:[[:space:]]*/s///p")
    Y=$(echo "$WIN_INFO" | sed -n -e "/^[[:space:]]*Absolute upper-left Y:[[:space:]]*/s///p")
    WIDTH=$(echo "$WIN_INFO" |  sed -n -e "/^[[:space:]]*Width:[[:space:]]*/s///p")
    HEIGHT=$(echo "$WIN_INFO" |  sed -n -e "/^[[:space:]]*Height:[[:space:]]*/s///p")
    
    set -x
    
    am7xxx-play -f x11grab -i ":0+${X},${Y}" -o video_size="${WIDTH}x${HEIGHT}"
  • display the output of a framebuffer device:
    am7xxx-play -f fbdev -i /dev/fb0
    
  • display the output of a v4l2 device:
    am7xxx-play -f video4linux2 -i /dev/video0 -o video_size=640x480,frame_rate=30
    
  • display any files supported by libav (but note that the framerate is not accurate in this case and audio is not decoded at all):
    am7xxx-play -i http://download.blender.org/peach/bigbuckbunny_movies/BigBuckBunny_640x360.m4v
    

Keep in mind that am7xxx-play is just a prototype, I think it is not worth adding audio decoding and audio/video synchronization to it.

It is interesting to note that the freedom to send images of arbitrary resolutions to the projectors exposed some bugs in the devices firmware. So if you get garbage output try replugging the device and changing the dimensions of the image you are sending for display.

Where to go from here?

In the long run I think that we could write a libav output format, or —maybe better— a GStreamer video sink based on libam7xxx.

GStreamer looks interesting to me, and maybe keystoning can be implemented as an element of a GStreamer pipeline too. I'll ask GStreamer devs about that.

On linux systems, writing a kernel driver is also a possibility, the first easy choice would be writing it as a v4l2 output device accepting JPEG images or raw NV12 frames, this way v4l2sink from GStreamer could be used immediately.

I don't know if the framebuffer way is viable, since we would have to do JPEG encoding in userspace anyways; I'll ask linux-media for advice.

But if we want portability (GStreamer runs on Windows too, doesn't it?) the linux kernel driver becomes low priority.

There is also the issue of having some display-extension-mode, right now am7xxx-play is enough if you are only interested in a clone of the current screen, but what if we want another screen displayed by the projector? I read the Xvfb might go away in future Xorg versions and that we should use xf86-video-dummy, but I've just learned about it, I have to see how to use it, if it supports RANDR and stuff like that.

Call for help

If any Debian Developer is willing to sponsor the libam7xxx package for upload to the Debian archive, let us know, I'll try asking on debian-mentors as well. The packaging bits are in the libam7xxx debian branch.

If you are interested in sponsoring a port to Android/Linux, get in touch, we could use some (even old) Android device with USB Host support and maybe some other projectors to test multi-device operation of libam7xxx.

If you'd like to have an Open Projectors project where you can find Open Source software to use with video projectors, speak up! I'd like to hear some opinions before I start putting time on that. The L.A.S.E.R. Tag Linux port is an example of the kind of software I am talking about.

We are in the #am7xxx channel on the freenode IRC network.

Side Note: the development of am7xxx-play brought also a little fix for libavdevice.

libam7xxx-0.1.3 released

$
0
0

After almost one year of fixes and new functionalities here is libam7xxx-0.1.3. libam7xxx is a library to communicate with USB pico-projectors like, for instance, the Philips/Sagemcom PicoPix devices; you can read more about it in the previous stories:

The devices supported in this release are:

  • Acer C110
  • Acer C112
  • Aiptek PocketCinema T25
  • Philips/SagemCom PicoPix 1020
  • Philips/SagemCom PicoPix 2055

With this release PicoPix 1020 and 2055 are finally fully working, thanks to the people who helped fixing and testing the code, here is the entry from the NEWS file:

News for v0.1.3:
================

  * Better documentation
  * Ported to Windows (compiles with MinGW)
  * Added a minimal replacement of usb-modeswitch to use on systems where the
    latter is not available
  * Added support for Acer C112 (Thanks to Richard Wisenoecker)
  * Added support for Aiptek PocketCinema T25 (Thanks to Matti Koskinen)
  * Added some contrib scripts
  * Added support for setting the projectors zoom mode
  * Added multi-device support, now more than one projector can be used at the
    same time on the same system (Tested by Konstantin Lohmann)
  * Added support for Philips/SagemCom PicoPix PPX 2055
  * Fixed some problems with the supported Philips/SagemCom PicoPix devices,
    now these devices are fully working (Thanks to the Certik family)

Debian packages for i386 and amd64 are available at ao2.it/debian.

If anyone knows people at Sagemcom, would you put me in contact with them? They didn't reply to my previous messages to their support service address. I'd like to ask if they may be interested in providing some test units or to sponsor some development-time to make the pico-projectors work on Android.

Here is the shortlog between v0.1.2 and v0.1.3 for those interested in the development details:

Antonio Ospite (60):
      picoproj: add a note about image dimensions and native resolution
      Merge remote-tracking branch 'origin/rettichschnidi' into mingw-port
      HACKING.asciidoc: fix cmake invocation examples
      picoproj: use MAP_PRIVATE in the mmap call
      am7xxx: use hex notation for USB endpoints
      am7xxx: fix setting the USB configuration
      am7xxx: MinGW does not have endian.h, provide fallbacks
      am7xxx: don't look for the math library when compiling for Windows
      picoproj: issue a warning when passing "-f" more than once
      picoproj: fix a typo
      picoproj: replace mmap() with more portable file stream operations
      Don't set -pedantic-errors in CMAKE_C_FLAGS, it breaks check_symbol_exists()
      Add a CMAKE_TOOLCHAIN_FILE to compile with MinGW
      HACKING.asciidoc: add a section to explain Windows cross compilation
      Merge branch 'mingw-port'
      TODO: mention the plan about GStreamer
      Add a simple usb_mode_switch clone for am7xxx devices
      README.asciidoc document how to get libam7xx running on MS Windows
      README.asciidoc: add Royaltek PJU-2100 to the AM7XXX based devices list
      HACKING.asciidoc: add info about getting and building libam7xxx
      mingw_cross_toolchain.cmake: set the MINGW variable to True
      am7xxx-play: get the framerate from the video stream
      am7xxx-play: add a fallback definition for ENOTSUP
      am7xxx-play: check if sigaction is available
      am7xxx-play: check if strtok_r is available
      HACKING.asciidoc: add info about compiling am7xxx-play for Windows
      README.asciidoc: add info about running am7xxx-play.exe on Windows
      README.asciidoc: add Aiptek PocketCinema T25 to the AM7XXX devices list
      am7xxx: rename am7xxx_header.unknown0 to am7xxx_header.direction
      doc: update the list of supported devices
      contrib: add other supported devices to 55-am7xxx.rules
      contrib: add an example of how to start displaying images automatically
      Merge remote-tracking branch 'origin/rettichschnidi'
      am7xxx: implement support for the AM7XXX_PACKET_TYPE_ZOOM
      picoproj: support setting the zoom mode
      am7xxx-play: support setting the zoom mode
      am7xxx: update signature and documentation of am7xxx_set_power_mode()
      picoproj: make the help about power mode more consistent
      am7xxx-play: make the help about power mode more consistent
      contrib: add a test image to show how zoom modes work
      Merge branch 'am7xxx_set_zoom_mode'
      doc: update Doxygen configuration
      examples: support multiple devices
      am7xxx: add support for Philips/SagemCom PicoPix PPX 2055
      picoproj: clarify that when AM7XXX_ZOOM_TEST is set no image gets sent
      am7xxx: print text description of the 'direction' field
      am7xxx: assign device_list next to its first use
      am7xxx: add a note on the symmetry of read_header() and send_header()
      am7xxx: don't mention AM7XXX_DIRECTION_OUT in read_header()
      Fix an error when compiling with both -O0 and -Wp,-D_FORTIFY_SOURCE=2
      am7xxx: detect unexpected responses to AM7XXX_PACKET_TYPE_DEVINFO requests
      am7xxx: cache device info in am7xxx_get_device_info()
      am7xxx: make libam7xxx work with Philips/Sagemcom PPX projectors
      Merge branch 'fix-devinfo-for-PicoPix'
      contrib: add the am7xxx-play-window.sh script
      am7xxx: fix coding style
      am7xxx-play: rename 'packet' to 'in_packet'
      am7xxx-play: remove an unreachable break
      am7xxx-play: switch to avcodec_encode_video2()
      Release version 0.1.3

Matti Koskinen (1):
      am7xxx: add support for Aiptek PocketCinema T25

Reto Schneider (5):
      Make example programs optional.
      Stop CMake if function avformat_open_input not available,     print an error message. Prevents compile errors later on.
      Fix usage of FIND_PATH, allow $FFMPEG_DIR to be used.
      Fix typo.
      Add missing break.

Richard Wisenoecker (1):
      am7xxx: add support for Acer C112

libam7xxx-0.1.4 released

$
0
0

Release 0.1.4 of libam7xxx is out, bringing a very nice performance improvement. Here is the entry from the NEWS file:

News for v0.1.4:
================

  * Improved USB device configuration in order to support more devices
  * Added support for Philips/Sagemcom PicoPix 2330 (Thanks to Grégory
    Lemesre)
  * Fixed verbose debug output
  * Confirmed that libam7xxx works with the Top-Height/TEC PP700 projector
  * Implemented am7xxx_send_image_async()
  * Made am7xxx-play almost twice faster by using am7xxx_send_image_async()
  * Improved documentation
  * Added support for compiling with clang
  * A lot of little fixes for correctness, robustness and portability
  * Renamed am7xxx_mode_switch to am7xxx-modeswitch, added an udev rule for it

Debian packages for i386 and amd64 are available at ao2.it/debian.

In this release am7xxx-play performance almost doubled, by just using the new shiny am7xxx_send_image_async() function, check out the minstat analysis of the benchmark for the details.

libam7xxx-0.1.6 released

$
0
0

The libam7xxx-0.1.6 release is out; it's a maintenance release with no big new features. libam7xxx is a library to communicate with USB pico-projectors like, for instance, the Philips/Sagemcom PicoPix devices; you can read more about it in the previous stories:

Here is an overview from the NEWS file of the changes accumulated since the previous release:

News for v0.1.6:
================

  * Fix some ffmpeg compile time deprecation warnings in am7xxx-play
  * Fix some fmmpeg runtime warnings
  * Don't dump the last frame unconditionally in am7xxx-play when in DEBUG
    mode, add an option to enable the frame dump, but this is only active in
    DEBUG mode
  * Fix some compilation warnings from clang
  * Replace deprecated FFmpeg API symbol PIX_FMT_NV12 in am7xxx-play (Thanks
     to Andreas Cadhalpun)
  * Fix the Length field in the switch command in am7xxx-modeswitch (Thanks to
    Balasubramanian S)
  * More robust handling of USB configurations
  * More robust handling of kernel driver detachment (Thanks to Andrea
    Console)
  * Minor documentation cleanups
  * Minor build system improvements (am7xxx-play can now build without XCB,
    but some functionalities will not be available)
  * Misc code cleanups
  * Relicense the example under GPL-3+

The Debian packages have been kindly uploaded to Unstable by Gregor Herrmann.

On USB projectors, linux and libam7xxx

$
0
0

I was looking into compact/mini/pico/handheld projectors, and I obviously wanted something I could use under GNU/linux, there were basically two choices:

  1. Pick up a projector with VGA/HDMI: Operating System independent.
  2. Pick up a USB projector: shipped only with drivers for MS Windows (and sometimes for MacOSX too).

Since the first choice was more expensive and I verified that writing a driver for the second case wasn't too hard, I picked up an Acer C110, I paid it about 160 €, but you can find it even cheaper somewhere else, grr.

AM7X or AM7XXX

The C110 is based on an Actions Micro AM7212P IC and uses USB bulk transfers with a simple packet based protocol on top to exchange data and commands to and from a host system and the AM7XXX chip.

Other projectors using the same protocol are:

These projectors use the USB Vendor and Product IDs 1de1:1101 in mass storage mode and 1de1:c101 in display mode.

Some DPFs too (from Hannspree for instance) are known to use these chips but I don't know yet if they can be put in USB display mode.

I will refer to these devices as either AM7X or AM7XXX devices.

Open Source driver for AM7XXX devices

Reto Schneider and I are reverse engineering the USB protocol used by these devices, using USB dumps and disassembling the Windows device driver, and a basic but already usable library to communicate with those AM7x based projectors can be found in libam7xxx. Reto was the first to start working on that, in the form of acerc11xdrv.

So you can now get these projectors to work wherever libusb-1.0 works, that means you can use them with your phone if it can run GNU/Linux for instance, or even Android/Linux but I don't have an Android device to verify that.

For now all the communication about the development is happening on the #am7xxx IRC Channel on the Freenode Network, come find us, and let us know if you want to help: like hosting a mailing list for us, or sponsoring some hardware (USB projectors you want to use freely or devices you want to use these projectors with).

Side note: the user manuals of these devices sometimes refer to the functionality of displaying images over USB as Display over USB (or DoUSB), this definition is used on a lot of projectors but I don't know if it refers always to the same protocol/mechanism to send images over USB.

Linux running ON other projectors

Incidentally, when I was doing my pre-purchase market research, I ran into several projectors which —unsurprisingly— are running a Linux system themselves (linux kernel, busybox, etc.), here is a summary of what I found out:

  • Samsung SP-H03 (not based on AM7X): the firmware image can be downloaded here, and Samsung is providing the source code for the Free Software used in it, you can find it on opensource.samsung.com (AFAIR Harald Welte gave them some directions about GPL compliance, right?).

    This could be an interesting device if you want to run your own code on a projector.

  • Acer K330: based on a chip of the same am7x family as the C110.

    The firmware image is available for download and it does contain the Linux kernel and other Open Source software, but the source code is not available, neither Linux or the GPL are mentioned in the downloadable documentation; I am going to do more research on this later to see if Acer is in compliance with the GPL.

Open Projectors?

Having the ability of processing an image before projecting it —either on an external system, or on the projector itself— opens up to a lot of possibilities, and I can foresee an increase of AR applications using projectors; so, do you think there is enough interest for an Open Projectors project? A place where we can share the techniques (keystone correction, or some more sophisticate anamorphic transformations by the means of a Camera-Projector system) and the Open Source software implementing them, all in a single place.

Get in touch if you have any ideas about that.

An Open Source driver for USB pico projectors

$
0
0

This is a follow-up to the previous story about am7xxx devices.

The 0.1.2 stable release of libam7xxx is out, and some binary Debian packages are available as well. Check out also the am7xxx page on Ohloh.

The devices supported in this release are:

This release comes with a display daemon based on libav, it is called am7xxx-play and you can use it to:

  • display your X desktop:
    am7xxx-play -f x11grab -i :0.0
  • display the content of a single X window with a script like this one:
    #!/bin/sh
    
    set -e
    
    WIN_INFO="$(xwininfo)"
    
    X=$(echo "$WIN_INFO" | sed -n -e "/^[[:space:]]*Absolute upper-left X:[[:space:]]*/s///p")
    Y=$(echo "$WIN_INFO" | sed -n -e "/^[[:space:]]*Absolute upper-left Y:[[:space:]]*/s///p")
    WIDTH=$(echo "$WIN_INFO" |  sed -n -e "/^[[:space:]]*Width:[[:space:]]*/s///p")
    HEIGHT=$(echo "$WIN_INFO" |  sed -n -e "/^[[:space:]]*Height:[[:space:]]*/s///p")
    
    set -x
    
    am7xxx-play -f x11grab -i ":0+${X},${Y}" -o video_size="${WIDTH}x${HEIGHT}"
  • display the output of a framebuffer device:
    am7xxx-play -f fbdev -i /dev/fb0
  • display the output of a v4l2 device:
    am7xxx-play -f video4linux2 -i /dev/video0 -o video_size=640x480,frame_rate=30
  • display any files supported by libav (but note that the framerate is not accurate in this case and audio is not decoded at all):
    am7xxx-play -i http://download.blender.org/peach/bigbuckbunny_movies/BigBuckBunny_640x360.m4v

Keep in mind that am7xxx-play is just a prototype, I think it is not worth adding audio decoding and audio/video synchronization to it.

It is interesting to note that the freedom to send images of arbitrary resolutions to the projectors exposed some bugs in the devices firmware. So if you get garbage output try replugging the device and changing the dimensions of the image you are sending for display.

Where to go from here?

In the long run I think that we could write a libav output format, or —maybe better— a GStreamer video sink based on libam7xxx.

GStreamer looks interesting to me, and maybe keystoning can be implemented as an element of a GStreamer pipeline too. I'll ask GStreamer devs about that.

On linux systems, writing a kernel driver is also a possibility, the first easy choice would be writing it as a v4l2 output device accepting JPEG images or raw NV12 frames, this way v4l2sink from GStreamer could be used immediately.

I don't know if the framebuffer way is viable, since we would have to do JPEG encoding in userspace anyways; I'll ask linux-media for advice.

But if we want portability (GStreamer runs on Windows too, doesn't it?) the linux kernel driver becomes low priority.

There is also the issue of having some display-extension-mode, right now am7xxx-play is enough if you are only interested in a clone of the current screen, but what if we want another screen displayed by the projector? I read the Xvfb might go away in future Xorg versions and that we should use xf86-video-dummy, but I've just learned about it, I have to see how to use it, if it supports RANDR and stuff like that.

Call for help

If any Debian Developer is willing to sponsor the libam7xxx package for upload to the Debian archive, let us know, I'll try asking on debian-mentors as well. The packaging bits are in the libam7xxx debian branch.

If you are interested in sponsoring a port to Android/Linux, get in touch, we could use some (even old) Android device with USB Host support and maybe some other projectors to test multi-device operation of libam7xxx.

If you'd like to have an Open Projectors project where you can find Open Source software to use with video projectors, speak up! I'd like to hear some opinions before I start putting time on that. The L.A.S.E.R. Tag Linux port is an example of the kind of software I am talking about.

We are in the #am7xxx channel on the freenode IRC network.

Side Note: the development of am7xxx-play brought also a little fix for libavdevice.

libam7xxx-0.1.3 released

$
0
0

After almost one year of fixes and new functionalities here is libam7xxx-0.1.3.libam7xxx is a library to communicate with USB pico-projectors like, for instance, the Philips/Sagemcom PicoPix devices; you can read more about it in the previous stories:

The devices supported in this release are:

  • Acer C110
  • Acer C112
  • Aiptek PocketCinema T25
  • Philips/SagemCom PicoPix 1020
  • Philips/SagemCom PicoPix 2055

With this release PicoPix 1020 and 2055 are finally fully working, thanks to the people who helped fixing and testing the code, here is the entry from the NEWS file:

News for v0.1.3:
================

  * Better documentation
  * Ported to Windows (compiles with MinGW)
  * Added a minimal replacement of usb-modeswitch to use on systems where the
    latter is not available
  * Added support for Acer C112 (Thanks to Richard Wisenoecker)
  * Added support for Aiptek PocketCinema T25 (Thanks to Matti Koskinen)
  * Added some contrib scripts
  * Added support for setting the projectors zoom mode
  * Added multi-device support, now more than one projector can be used at the
    same time on the same system (Tested by Konstantin Lohmann)
  * Added support for Philips/SagemCom PicoPix PPX 2055
  * Fixed some problems with the supported Philips/SagemCom PicoPix devices,
    now these devices are fully working (Thanks to the Certik family)

Debian packages for i386 and amd64 are available at ao2.it/debian.

If anyone knows people at Sagemcom, would you put me in contact with them? They didn't reply to my previous messages to their support service address. I'd like to ask if they may be interested in providing some test units or to sponsor some development-time to make the pico-projectors work on Android.

Here is the shortlog between v0.1.2 and v0.1.3 for those interested in the development details:

Antonio Ospite (60):
      picoproj: add a note about image dimensions and native resolution
      Merge remote-tracking branch 'origin/rettichschnidi' into mingw-port
      HACKING.asciidoc: fix cmake invocation examples
      picoproj: use MAP_PRIVATE in the mmap call
      am7xxx: use hex notation for USB endpoints
      am7xxx: fix setting the USB configuration
      am7xxx: MinGW does not have endian.h, provide fallbacks
      am7xxx: don't look for the math library when compiling for Windows
      picoproj: issue a warning when passing "-f" more than once
      picoproj: fix a typo
      picoproj: replace mmap() with more portable file stream operations
      Don't set -pedantic-errors in CMAKE_C_FLAGS, it breaks check_symbol_exists()
      Add a CMAKE_TOOLCHAIN_FILE to compile with MinGW
      HACKING.asciidoc: add a section to explain Windows cross compilation
      Merge branch 'mingw-port'
      TODO: mention the plan about GStreamer
      Add a simple usb_mode_switch clone for am7xxx devices
      README.asciidoc document how to get libam7xx running on MS Windows
      README.asciidoc: add Royaltek PJU-2100 to the AM7XXX based devices list
      HACKING.asciidoc: add info about getting and building libam7xxx
      mingw_cross_toolchain.cmake: set the MINGW variable to True
      am7xxx-play: get the framerate from the video stream
      am7xxx-play: add a fallback definition for ENOTSUP
      am7xxx-play: check if sigaction is available
      am7xxx-play: check if strtok_r is available
      HACKING.asciidoc: add info about compiling am7xxx-play for Windows
      README.asciidoc: add info about running am7xxx-play.exe on Windows
      README.asciidoc: add Aiptek PocketCinema T25 to the AM7XXX devices list
      am7xxx: rename am7xxx_header.unknown0 to am7xxx_header.direction
      doc: update the list of supported devices
      contrib: add other supported devices to 55-am7xxx.rules
      contrib: add an example of how to start displaying images automatically
      Merge remote-tracking branch 'origin/rettichschnidi'
      am7xxx: implement support for the AM7XXX_PACKET_TYPE_ZOOM
      picoproj: support setting the zoom mode
      am7xxx-play: support setting the zoom mode
      am7xxx: update signature and documentation of am7xxx_set_power_mode()
      picoproj: make the help about power mode more consistent
      am7xxx-play: make the help about power mode more consistent
      contrib: add a test image to show how zoom modes work
      Merge branch 'am7xxx_set_zoom_mode'
      doc: update Doxygen configuration
      examples: support multiple devices
      am7xxx: add support for Philips/SagemCom PicoPix PPX 2055
      picoproj: clarify that when AM7XXX_ZOOM_TEST is set no image gets sent
      am7xxx: print text description of the 'direction' field
      am7xxx: assign device_list next to its first use
      am7xxx: add a note on the symmetry of read_header() and send_header()
      am7xxx: don't mention AM7XXX_DIRECTION_OUT in read_header()
      Fix an error when compiling with both -O0 and -Wp,-D_FORTIFY_SOURCE=2
      am7xxx: detect unexpected responses to AM7XXX_PACKET_TYPE_DEVINFO requests
      am7xxx: cache device info in am7xxx_get_device_info()
      am7xxx: make libam7xxx work with Philips/Sagemcom PPX projectors
      Merge branch 'fix-devinfo-for-PicoPix'
      contrib: add the am7xxx-play-window.sh script
      am7xxx: fix coding style
      am7xxx-play: rename 'packet' to 'in_packet'
      am7xxx-play: remove an unreachable break
      am7xxx-play: switch to avcodec_encode_video2()
      Release version 0.1.3

Matti Koskinen (1):
      am7xxx: add support for Aiptek PocketCinema T25

Reto Schneider (5):
      Make example programs optional.
      Stop CMake if function avformat_open_input not available,     print an error message. Prevents compile errors later on.
      Fix usage of FIND_PATH, allow $FFMPEG_DIR to be used.
      Fix typo.
      Add missing break.

Richard Wisenoecker (1):
      am7xxx: add support for Acer C112

libam7xxx-0.1.4 released

$
0
0

Release 0.1.4 of libam7xxx is out, bringing a very nice performance improvement. Here is the entry from the NEWS file:

News for v0.1.4:
================

  * Improved USB device configuration in order to support more devices
  * Added support for Philips/Sagemcom PicoPix 2330 (Thanks to Grégory
    Lemesre)
  * Fixed verbose debug output
  * Confirmed that libam7xxx works with the Top-Height/TEC PP700 projector
  * Implemented am7xxx_send_image_async()
  * Made am7xxx-play almost twice faster by using am7xxx_send_image_async()
  * Improved documentation
  * Added support for compiling with clang
  * A lot of little fixes for correctness, robustness and portability
  * Renamed am7xxx_mode_switch to am7xxx-modeswitch, added an udev rule for it

Debian packages for i386 and amd64 are available at ao2.it/debian.

In this release am7xxx-play performance almost doubled, by just using the new shiny am7xxx_send_image_async() function, check out the minstat analysis of the benchmark for the details.

libam7xxx-0.1.6 released

$
0
0

The libam7xxx-0.1.6 release is out; it's a maintenance release with no big new features.libam7xxx is a library to communicate with USB pico-projectors like, for instance, the Philips/Sagemcom PicoPix devices; you can read more about it in the previous stories:

Here is an overview from the NEWS file of the changes accumulated since the previous release:

News for v0.1.6:
================

  * Fix some ffmpeg compile time deprecation warnings in am7xxx-play
  * Fix some fmmpeg runtime warnings
  * Don't dump the last frame unconditionally in am7xxx-play when in DEBUG
    mode, add an option to enable the frame dump, but this is only active in
    DEBUG mode
  * Fix some compilation warnings from clang
  * Replace deprecated FFmpeg API symbol PIX_FMT_NV12 in am7xxx-play (Thanks
     to Andreas Cadhalpun)
  * Fix the Length field in the switch command in am7xxx-modeswitch (Thanks to
    Balasubramanian S)
  * More robust handling of USB configurations
  * More robust handling of kernel driver detachment (Thanks to Andrea
    Console)
  * Minor documentation cleanups
  * Minor build system improvements (am7xxx-play can now build without XCB,
    but some functionalities will not be available)
  * Misc code cleanups
  * Relicense the example under GPL-3+

The Debian packages have been kindly uploaded to Unstable by Gregor Herrmann.

libam7xxx-0.1.7 released

$
0
0

The libam7xxx-0.1.7 release is out; it's a maintenance release with no big new features. libam7xxx is a library to communicate with USB pico-projectors like, for instance, the Philips/Sagemcom PicoPix devices; you can read more about it in some of the previous stories:

One notable change in this release is that FFMpeg 3.1+ is now required to build one of the example programs.

Building for Windows has also been improved.

Here is an overview from the NEWS file of the changes accumulated since the previous release:

News for v0.1.7:
================

  * Fix FFMpeg deprecation warnings, the code now depends on FFMpeg 3.1+ 
  * Fix compilation on Windows
  * Update the Windows build instructions in HACKING.asciidoc
  * Add a HOWTO for new users in contrib/howto-picopix.asciidoc
  * Add a patch to contrib/ to allow compiling libam7xxx on Ubuntu 14.04 LTS
  * Make sure am7xxx_get_device_info() always returns sensible values
  * Fix warnings about _BSD_SOURCE deprecation
  * Misc code and build system cleanups

The Debian packages have been kindly uploaded to Unstable by Gregor Herrmann.

Viewing all 11 articles
Browse latest View live