Where is the x265 plugin for Intel Media SDK? - libx265

Envrionment: Windows 10. Intel Media SDK 2016.0.2
I have been using the Media SDK for decoding H.264 video. It works great. Now, I need to decode H.265 video. This seems to be just one line change in the source code. However, when run, I get the following error:
plugin_loader.h :166 [ERROR] Failed to load plugin from GUID,
sts=-9: { 0x15, 0xdd, 0x93, 0x68, 0x25, 0xad, 0x47, 0x5e, 0xa3, 0x4e, 0x35, 0xf3, 0xf5, 0x42, 0x17, 0xa6 }
(Intel (R) Media SDK plugin for HEVC DECODE)
Default plugin cannot be loaded (possibly you have to define plugin explicitly)
Strange. The same code works great for H.264 but seems to require a plugin for H.265. Is there something I am missing? Does anyone know where I can find this plugin? Regards.

You pass the wrong GUID. For HEVC plugin for decoding you must use
mfxPluginUID MFX_PLUGINID_HEVCD_HW = {{0x33, 0xa6, 0x1c, 0x0b, 0x4c, 0x27, 0x45, 0x4c, 0xa8, 0xd8, 0x5d, 0xde, 0x75, 0x7c, 0x6f, 0x8e}};
(define in mfxplugin.h in Media SDK include folder)

Related

How to use CANOpen PDO?

I am trying to send data from TMS320F28335 to EPOS2 24/5 driver of Maxon Motor using CANOpen.
Previously, I used only SDO Protocol on velocity mode. But now I try to use PDO Protocol.
I refer to Fig. 1. to use velocity mode with SDO protocol.
PDO requires 'Mapping', 'RPDO', 'TPDO'...
It makes me complicate.
First quetion
I read datasheet of Maxon Motor. 'PDO Mapping' requires 'Pre-Operation Mode'.
From above figure, should I implement 'PDO Mapping' before 'Set Operation Mode'?
Second quetion
I use TPDO1, RTDO1 because I only want to acquire velocity of motor and send target velocity value to motor driver.
The first object of TPDO1 is 'Statusword'(index : 0x1A00, sub-index : 0x01, value : 0x60410010).
The sencod object of TPDO1 is 'Velocity Actual Value'(index : 0x1A00, sub-index : 0x02, value : 0x606C0020)
The first object of RPDO1 is 'Controlword'(index : 0x1600, sub-index : 0x01, value : 0x60400010).
The second object of RPDO1 is 'Target Velocity'(index : 0x1600, sub-index : 0x02, value : 0x60FF0020)
And then I send 'Set Operation Mode' packet to motor driver and send 'Shutdown', 'Enable' command as can be seen from figure 1.
After 'shutdown', 'enable' I don't know what to do next.
Third quetion
From figure 2, 'Operational Mode' can be done using 'Start Remote Node' command.
Then if 'Operational Mode' could be done by 'Start Remote Node' in NMT Protocol, how to set 'Velocity Mode' after 'Start Remote Node'?
Are there two method to set 'Operational Mode'?
Send '0x6060-00', '0xFE' in 'Set Operational Mode' step.
Use 'Start Remote Node' method of NMT Protocol.
If there are two method, how to set the velocity mode in second method?
Thank you for your comment.

Load STK applet on SIM card boot

Are there any methods that a Sim Toolkit applet is selected when phone boots or SIM card is inserted on phone?
I want an applet on a SIM card that automatically executes some commands and display a message when SIM is installed on phone or phone boots.
STK Applet got 3 methods 'process','processToolkit'and 'install'.
I don't know if each of methods 'process','processToolkit' can be called during phone boot or SIM installation on phone?
This is possible. You have to register the event EVENT_PROFILE_DOWNLOAD during the applet installation.
toolkitRegistry = ToolkitRegistrySystem.getEntry();
toolkitRegistry.setEvent(EVENT_PROFILE_DOWNLOAD);
// in case you need a menu later, too:
toolkitRegistry.initMenuEntry( ...
When the SIM is started the modem will always execute the TERMINAL PROFILE commmand. This will trigger the registered EVENT_PROFILE_DOWNLOAD by processToolkit. In case you have a menu the menu selection will be handled also by processToolkit. The event will be EVENT_MENU_SELECTION then.
From processToolkit you can execute any necessary behavior, e.g. displaying a text.
ProactiveHandlerSystem.getTheHandler().clear();
ProactiveHandlerSystem.getTheHandler().initDisplayText((byte) 0x81, 0x04, array, offset, (short) (length));
byte res = ProactiveHandlerSystem.getTheHandler().send();
return res == RES_CMD_PERF;
The array would be the ASCII encoding of your text.
Consult the UICC API as startign point.

Digispark replacement Wire library

I have a dilemma:
I am trying to get a Digispark to read a BH1750 I2C light sensor and then send the readout via USB. Currently I'm using the DigiUSB library to send to the PC but the sketch is very big (can't implement any of the features I want, using 94% of the flash mem). At the moment it's just sending the value every 0.5 seconds, doing no calculations on it and I have to re-plug the device at boot. I know how to implement these features, it's just that there isn't enough space on the digispark, using both Wire and DigiUSB.
So in order to reduce the size I want to replace Digistump's big Wire library with SoftI2CMaster&SoftWire OR USIWire, both half the size.
I tried two BH1750 I2C libraries (both work fine with Digistump's Wire) but for all four combinations I get the following error:
In file included from C:\Users\xyz\AppData\Local\Temp\arduino_modified_sketch_192160\Echo.ino:8:0:
C:\Users\xyz\Documents\Arduino\libraries\SoftI2CMaster-master/SoftWire.h:101:10: error: conflicting return type specified for 'virtual size_t SoftWire::write(const uint8_t*, size_t)'
size_t write(const uint8_t *data, size_t quantity) {
^
In file included from C:\Users\xyz\AppData\Local\Arduino15\packages\digistump\hardware\avr\1.6.7\cores\tiny/Stream.h:24:0,
from C:\Users\xyz\AppData\Local\Arduino15\packages\digistump\hardware\avr\1.6.7\cores\tiny/TinyDebugSerial.h:31,
from C:\Users\xyz\AppData\Local\Arduino15\packages\digistump\hardware\avr\1.6.7\cores\tiny/WProgram.h:18,
from C:\Users\xyz\AppData\Local\Arduino15\packages\digistump\hardware\avr\1.6.7\cores\tiny/Arduino.h:4,
from sketch\Echo.ino.cpp:1:
C:\Users\xyz\AppData\Local\Arduino15\packages\digistump\hardware\avr\1.6.7\cores\tiny/Print.h:75:18: error: overriding 'virtual void Print::write(const uint8_t*, size_t)'
virtual void write(const uint8_t *buffer, size_t size);
^
exit status 1
I tried to figure out how to fix this "conflicting return type" error but I couldn't figure out how to do that. Google is often reliable in finding answers but not today.
Any help would be appreciated!

How to address Port names (PORTB etc) in an array (arduino uno)

Is it possible to put the names of ports in an array?
I'm looking something like:
const ??? my_ports_config[8]= { PORTB, PORTD, PORTB, PORTB, PORTD, PORTB, PORTB, PORTD };
So to do (direct register bit set):
my_ports_config[i] |= _BV(7);
Is it possible?
volatile byte* const my_ports_config[8]= { &PORTB, &PORTD, &PORTB, &PORTB, &PORTD, &PORTB, &PORTB, &PORTD };
Of course you can. The PORTB name is nothing but a handy alias, a #define for an address on the chip. Depending on the Arduino model, that can vary of course. The easiest way to learn these addresses is to study the datasheet for the microcontroller part on your device. In the Atmel documentation they're always listed late in the document in a chapter called "Register Summary." But for the Uno I think you need the 328P datasheet Check out page 615. The 328 only has ports B C and D though, so actually setting the ports directly will probably take fewer instructions.

I2C MCP3221 12 bit ADC reading 0 at any voltage

I've hooked up an MCP3221 to a Teensy 3.1 on the I2C bus and connect it to Vref(3.3V), just to check if it's working. However it's reading 0, even when I hook it up to a different voltage. Is my code faulty or should I just get a new device?
#include <MCP3221.h>
#include <Wire.h>
#include "SoftwareSerial.h"
#define ADDRESS 0x4D // 7 bits address is 0x4D, 8 bits is 0x9B
MCP3221 adc(155,0x3);
void setup() {
Serial.begin(9600);
Serial.println("First");
Wire.begin(); //connects I2C
}
void loop() {
Serial.println(adc.readI2CADC());
delay(10);
}
There is a list of device addresses in the Microchip data sheet DS21732C on the page 20.
Depends on the marking code on your chip.
You are not using the right address. You declare the constant but never use it. The adc declaration should be like this
MCP3221 adc(ADDRESS, 0x3);
Why? Doing a little search, I found out that instead of 8 bits address (155 in decimal or 0x9B in hexadecimal), you have to use 7 bits address, 0x4D in this case. You can see that in this example, too. I think you should have this example in the Arduino IDE, in File > Examples > MCP3221.
Looking at the example, seems like the second argument you passed to the adc can be wrong, too, but I'm not sure about this. Try a greater value if you see you always measure the same.

Resources