It seems that the reason my new camera, and many others, will not record more than 30 minutes of video is that to do so would subject the camera to 4.9% EU import duty that applies to camcorders.
Why do we have such a rule? It clearly does not collect more tax as camera manufacturers simply cripple their cameras so as not to allow a recording over 29:59. In fact, I can just press record again at that point I believe. So what the bloody hell is the point. Why make a law that simply inconveniences consumers in the EU by having the products they want to buy crippled by the manufacturer?
Pondering the stupidity of this law - surely if the camera, at the point of import, does not meet the criteria as a camcorder (i.e. crippled), but is later (within the EU) modified so that it is now a camcorder? Surely as, at that point, it is already imported, then it will not attract the duty.
So, come on Canon, release a s/w version that allows my camera to record more than 30 minutes but don't include it with shipped cameras, make it download only and I'll modify my camera by loading it.
I have suggested this to Canon, and asked for a reply on the matter.
2012-08-16
2012-08-11
Maybe they are getting ready for IPv6
To my surprise the Canon 1D X is using EPRT and EPSV on FTP for file upload. Whilst these work for IPv4, they are extra commands designed primarily to support IPv6 addressing. So maybe that is on the cards. I may have to pester them.
However, I was impressed with what it does do, albeit on IPv4, when I was packet dumping.
Set to upload images as taken, and connected to Ethernet. Fair enough.
Press button half way to focus, and WTF?!? - it connects to FTP, logs in, sets image type I, and holds control TCP connection open... When I then press all the way to take the picture it sends it. If I release focus it quits the FTP and closes.
So yes, it is pre-empting my picture taking by starting the FTP process on the focus, and thus minimising any delay in getting images transferred.
That is impressive! That is some attention to detail... Well done Canon.
Re-inventing wheels
Quite often I end up writing some sort of utility function, normally in C. I tend not to write full blown applications that often (well, not for PC environment) as apps tend, these days, to be web based with back end utilities of various sorts. Today I was coding something which had previously been done in various scripts using various existing utilities. Basically, it is a tool to handle JPEG images from my camera(s) and populate a mysql database entry with a load of data from the image (width, height, ISO, aperture, exposure, camera, lens, etc). The database is used to make the photo site work.
So there are a number of stages to the process of making a new utility like this.
1. Has someone else already written it?
Often this is the case, as there are so many people and so many computers out there. There are two snags you run in to. Some times someone has written a big, all powerful system that does everything, including what you want - this is great, expect such things can be slow, and big, and take a lot of RTFM and config, but sometimes it is the way to go. The other issue can be that there is a small quick utility that does not quite do what you want, so needs wrapping up in a script with other stuff, or requires some minor changes. One can change an existing app, and even send in new code submissions. Sometimes this too is the right way to go. However, all too often there is not an exact fit for what you need.
2. Can you script it?
The other approach, especially when there are various utilities and tools that do some of the job, is to make a script. Code it using some scripting language (yes, I know, I still use csh, and should be shot). It can be easy to hack about and change, but tends to be slower and messier than doing C code. In this instance this is what I had done, and I could not find a way to add an extra detail (the lens name) using existing tools.
3. Is there a library?
Of course, if you are going to code something then there may well be an existing library. Rarely is the library perfectly suited, and can either be bloat or broken just like existing utilities. Some times there is a perfect library for the job. A good example of a library that just works, and whilst it is complex, if has good documentation and examples, is the curl library. I have, in the past, hand coded http requests, but these days I just use libcurl.
For the image processing task, there is both a jpeg library and an exif library. I was using libexif already in a simpler utility that was used by my scripts. It was working fine but only did part of the job.
4. Make a library?
One thing I have done a few times now is made my own library. I have tools for mysql working, and for XML file handling, and generating png images. All of these came about because existing libraries were massive bloat or were broken in some way. Using my own library means I have to update it and maintain it as needed, but also, only as I need when I need new features. It means it does just what I want and I understand it. There are several people using my libraries already, so there is a tad more maintenance from time to time. This sort of thing works well when not working against a moving target - where specifications and current practice are not constantly changing.
5. Writing it from scratch?
Some times I do get to properly reinventing the wheel, as I did today. It means reading RFCs and specifications carefully, coding, and testing. It means lots of error traps and test cases.
So what was I doing and why did I re-invent the wheel, yet again?
The problem is that the JPEG/EXIF file format is complex. Well, not so much complex, but involves lots of different bits. JPEG is a codec format. EXIF defines various blocks in the JPEG file. EXIF uses TIFF format tags. These are in IFD blocks, which reference each other. Then there are camera specific uses of the format which are not standard but follow the standard to some extent. So some of the work is trial and error as well.
I want to extract a few key parameters of the JPEG file quickly. I don't want to load the whole file, just the necessary headers. Then I update the mysql database. I can use my own library for the mysql stuff, that also avoids any sql injection attacks by someone sending me a JPEG with SQL statements embedded in it.
I managed to get all but one of the data fields using libexif. The one I wanted was the lens name which is in the Maker Note field in the EXIF sub IFD from IFD0. Now, libexif is clever, in that it does not just grab the tagged fields, but understands many of them from the EXIF specification. It has the names of the fields, and knows how to display them. It knows Maker Note, and understands formats used by many camera makes including Canon. However, the lens name is not in its list, and so it does not extract it. There seems to be no way to tell it that I know what it is and just give me the damn string.
Well, this was a new thing, so I was prepared to leave it out for now, and try and see if there is an updated libexif I can use later which knows it.
But then I found some images were not working. Basically, two of the really simple parameters were not always right - the width and height. This is because I was getting these from the EXIF tags. But one of the cameras seems to rotate the image for portrait use, but does not change the EXIF tags (which, to be fair, are X and Y, not width and height). So I was seeing width and height swapped on portraits. But the JPEG is right. The problem is the image width and height is not an EXIF field, it is in the JPEG SOF0 header. Previously I used an imagemagick function to get this in a script, but I wanted to do this in one quick and efficient C tool.
So, re-inventing the wheel, I load the headers, including the first bytes of the SOF0 header to get width and height. I was able to scan the Maker Note for the lens name with no problem. It was not that hard to code. In fact, I think it took no longer than using the libexif did, and now I understand EXIF and TIFF a lot better as a result. I wish I had done it this way the first time.
So there are a number of stages to the process of making a new utility like this.
1. Has someone else already written it?
Often this is the case, as there are so many people and so many computers out there. There are two snags you run in to. Some times someone has written a big, all powerful system that does everything, including what you want - this is great, expect such things can be slow, and big, and take a lot of RTFM and config, but sometimes it is the way to go. The other issue can be that there is a small quick utility that does not quite do what you want, so needs wrapping up in a script with other stuff, or requires some minor changes. One can change an existing app, and even send in new code submissions. Sometimes this too is the right way to go. However, all too often there is not an exact fit for what you need.
2. Can you script it?
The other approach, especially when there are various utilities and tools that do some of the job, is to make a script. Code it using some scripting language (yes, I know, I still use csh, and should be shot). It can be easy to hack about and change, but tends to be slower and messier than doing C code. In this instance this is what I had done, and I could not find a way to add an extra detail (the lens name) using existing tools.
3. Is there a library?
Of course, if you are going to code something then there may well be an existing library. Rarely is the library perfectly suited, and can either be bloat or broken just like existing utilities. Some times there is a perfect library for the job. A good example of a library that just works, and whilst it is complex, if has good documentation and examples, is the curl library. I have, in the past, hand coded http requests, but these days I just use libcurl.
For the image processing task, there is both a jpeg library and an exif library. I was using libexif already in a simpler utility that was used by my scripts. It was working fine but only did part of the job.
4. Make a library?
One thing I have done a few times now is made my own library. I have tools for mysql working, and for XML file handling, and generating png images. All of these came about because existing libraries were massive bloat or were broken in some way. Using my own library means I have to update it and maintain it as needed, but also, only as I need when I need new features. It means it does just what I want and I understand it. There are several people using my libraries already, so there is a tad more maintenance from time to time. This sort of thing works well when not working against a moving target - where specifications and current practice are not constantly changing.
5. Writing it from scratch?
Some times I do get to properly reinventing the wheel, as I did today. It means reading RFCs and specifications carefully, coding, and testing. It means lots of error traps and test cases.
So what was I doing and why did I re-invent the wheel, yet again?
The problem is that the JPEG/EXIF file format is complex. Well, not so much complex, but involves lots of different bits. JPEG is a codec format. EXIF defines various blocks in the JPEG file. EXIF uses TIFF format tags. These are in IFD blocks, which reference each other. Then there are camera specific uses of the format which are not standard but follow the standard to some extent. So some of the work is trial and error as well.
I want to extract a few key parameters of the JPEG file quickly. I don't want to load the whole file, just the necessary headers. Then I update the mysql database. I can use my own library for the mysql stuff, that also avoids any sql injection attacks by someone sending me a JPEG with SQL statements embedded in it.
I managed to get all but one of the data fields using libexif. The one I wanted was the lens name which is in the Maker Note field in the EXIF sub IFD from IFD0. Now, libexif is clever, in that it does not just grab the tagged fields, but understands many of them from the EXIF specification. It has the names of the fields, and knows how to display them. It knows Maker Note, and understands formats used by many camera makes including Canon. However, the lens name is not in its list, and so it does not extract it. There seems to be no way to tell it that I know what it is and just give me the damn string.
Well, this was a new thing, so I was prepared to leave it out for now, and try and see if there is an updated libexif I can use later which knows it.
But then I found some images were not working. Basically, two of the really simple parameters were not always right - the width and height. This is because I was getting these from the EXIF tags. But one of the cameras seems to rotate the image for portrait use, but does not change the EXIF tags (which, to be fair, are X and Y, not width and height). So I was seeing width and height swapped on portraits. But the JPEG is right. The problem is the image width and height is not an EXIF field, it is in the JPEG SOF0 header. Previously I used an imagemagick function to get this in a script, but I wanted to do this in one quick and efficient C tool.
So, re-inventing the wheel, I load the headers, including the first bytes of the SOF0 header to get width and height. I was able to scan the Maker Note for the lens name with no problem. It was not that hard to code. In fact, I think it took no longer than using the libexif did, and now I understand EXIF and TIFF a lot better as a result. I wish I had done it this way the first time.
2012-08-10
2012-08-08
A Rev on holiday
Well, I am back, and the 1D X impressive. I only had half a day to play with it, and a couple of hours walking around Ρόδος old town this morning. Took over 500 pictures in L format JPG with quality setting 10.
It is interesting how things change in a few years. It seems I can now take RAW with no problem with either the write speed of a nice sandisk 32GB CF card, or the storage capacity. The other issue with RAW was the time it takes to upload. Well, this camera has gigabit Ethernet (albeit only IPv4) and so is able to upload fast, and I mean fast. Yes, I did not take these in raw, but even though many are 13M files, they uploaded, plugged in to the server at gigabit, at several per second and before I managed to extract my laptop from my bag and power it up, my photo site had the pictures all ready and working. So it looks like RAW will be a possible. Means the photo site updating to handle multiple versions of the same image. I can also set up a second card and WiFi so that I would WiFi a 4.5Mpix S JPG while recording an 18Mpix JPG and RAW for Ethernet upload later. Something to experiment with.
I was also rather impressed with the new focus and exposure settings. Rare to see any camera get sparklers right in auto!
It is interesting how things change in a few years. It seems I can now take RAW with no problem with either the write speed of a nice sandisk 32GB CF card, or the storage capacity. The other issue with RAW was the time it takes to upload. Well, this camera has gigabit Ethernet (albeit only IPv4) and so is able to upload fast, and I mean fast. Yes, I did not take these in raw, but even though many are 13M files, they uploaded, plugged in to the server at gigabit, at several per second and before I managed to extract my laptop from my bag and power it up, my photo site had the pictures all ready and working. So it looks like RAW will be a possible. Means the photo site updating to handle multiple versions of the same image. I can also set up a second card and WiFi so that I would WiFi a 4.5Mpix S JPG while recording an 18Mpix JPG and RAW for Ethernet upload later. Something to experiment with.
I was also rather impressed with the new focus and exposure settings. Rare to see any camera get sparklers right in auto!
![]() |
| Default P mode, using 50mm f/1.2. Used f/1.4 ISO 200 1/40s |
2012-08-07
Canon 1Dx Y U No IPv6?
OK, I finally got the Canon 1D X. I was hoping to have a week here in Greece to play with it, but I now have half a day before we go back. I'll post more later.
But Canon, really? New camera, only IPv4 on its gigabit Ethernet port. Tut tut.
But Canon, really? New camera, only IPv4 on its gigabit Ethernet port. Tut tut.
2012-08-06
DO NOT USE DHL THEY TELL TOTAL LIES (wav)
We called them Thursday and said we needed a parcel next day to Lindos and they said "express" would do that. We took parcel to depot by their deadline and they took it and did not say it would not be next day. Their web site says next day. Everything says next day.
Now they have not done next day (would be Friday). They handed to local courier in Athens on Friday at 14:09. They insist will be here by 17:30 Monday. Well at one point they say 24 hours (which would be 14:09 Saturday, so another lie). It is not until after they fail to deliver next day that they claim Lindos is a "+1" location, so not in fact next day at all.
Now (Monday) they say that local courier has it on a ship and might be Tuesday.
They are telling outright fucking lies and lies and lies. Up with which I will not put.
Just do not ever ever deal with these people. No not use DHL. They LIE to you.
I am now claiming that if my camera is not here by 17:30 then it is lost and I want my full insurance claim on it so I can get a new one.
Basically, it is looking like it may not even arrive before I leave Greece now.
LIERS DHL LIERS - CRIMINALLY FRAUDULENT LIERS... There is no other way to put it. They lied to get my business.
Update: We have explained that the contract is void as was based on a lie. I said that at this point we are seeking compensation for simple criminal fraud. They got business based on lies and now are continuing to lie. If they get to me by 17:30 today we will settle for simple refund. If not, I file a CC claim for compensation for their criminal activities including all consequential losses. This is just not acceptable. I am not sure the message is getting through somehow. Lets see.
FYI: DHL tracking express 4046630663 if you want to see.
Update: Fucking cheek. They (DHL) called, and said it was in Rhodos (an hour drive away) and missed for today, but if I call the local courier I could make a special for today. I explained to DHL that I paid for today (actually I paid for Friday) so if it is possible for today then they can call and arrange a special at their expense as I have already paid for today! I then hung up before they could argue. We will see. Best outcome is 17:31 delivery so we claim money back.
http://www.me.uk/2012-08-06T13-50-44+445555400007.wav
http://www.me.uk/2012-08-06T14-20-16+445555400007.wav
Update: Basically, DHL Athens are saying Lindos is a "+3" destination, i.e. their "Express" next day service is 4 working days. How the hell is that ever next day. Their web site talks of next possible business day. Well I can prove next day is possible, give me a package in London and I can get it to Lindos next day, and I don't even have a fleet of DHL planes, I would just fly Gatwick to Rhodes direct and taxi from Rhodes to Lindos. Could be done in about 6 hours if you are lucky.
Tuesday: We'll see if it arrives today. I fly back tomorrow. I need to review all the call recordings once more before we issue a county court claim. At the very least we should be contacting trading standards over this as they simply should not describe the service as "Next day" if it is not. They do not even have a asterisk with "* Some locations may be up to 4 working days" or some such! It is misleading advertising.
Update: ETA 12:30 Tuesday, 5 days after it was shipped next day from London.
Update: Just before 11:00 local time Tuesday, I have my camera and lens and memory card, it is all well packaged still, no dents, and works a treat. More on 1Dx when I have had a play with it.
And yes, DHL handed to SpeedEx who drove up in a FedEx van...
No signature, just handed to a bloke in the street (which happened to be me).
Odd how DHL claim it was signed for. I may ask for a copy, as just yet more fraud.
Update: DHL refunding charges.
Now they have not done next day (would be Friday). They handed to local courier in Athens on Friday at 14:09. They insist will be here by 17:30 Monday. Well at one point they say 24 hours (which would be 14:09 Saturday, so another lie). It is not until after they fail to deliver next day that they claim Lindos is a "+1" location, so not in fact next day at all.
Now (Monday) they say that local courier has it on a ship and might be Tuesday.
They are telling outright fucking lies and lies and lies. Up with which I will not put.
Just do not ever ever deal with these people. No not use DHL. They LIE to you.
I am now claiming that if my camera is not here by 17:30 then it is lost and I want my full insurance claim on it so I can get a new one.
Basically, it is looking like it may not even arrive before I leave Greece now.
LIERS DHL LIERS - CRIMINALLY FRAUDULENT LIERS... There is no other way to put it. They lied to get my business.
Update: We have explained that the contract is void as was based on a lie. I said that at this point we are seeking compensation for simple criminal fraud. They got business based on lies and now are continuing to lie. If they get to me by 17:30 today we will settle for simple refund. If not, I file a CC claim for compensation for their criminal activities including all consequential losses. This is just not acceptable. I am not sure the message is getting through somehow. Lets see.
FYI: DHL tracking express 4046630663 if you want to see.
Update: Fucking cheek. They (DHL) called, and said it was in Rhodos (an hour drive away) and missed for today, but if I call the local courier I could make a special for today. I explained to DHL that I paid for today (actually I paid for Friday) so if it is possible for today then they can call and arrange a special at their expense as I have already paid for today! I then hung up before they could argue. We will see. Best outcome is 17:31 delivery so we claim money back.
http://www.me.uk/2012-08-06T13-50-44+445555400007.wav
http://www.me.uk/2012-08-06T14-20-16+445555400007.wav
Update: Basically, DHL Athens are saying Lindos is a "+3" destination, i.e. their "Express" next day service is 4 working days. How the hell is that ever next day. Their web site talks of next possible business day. Well I can prove next day is possible, give me a package in London and I can get it to Lindos next day, and I don't even have a fleet of DHL planes, I would just fly Gatwick to Rhodes direct and taxi from Rhodes to Lindos. Could be done in about 6 hours if you are lucky.
Tuesday: We'll see if it arrives today. I fly back tomorrow. I need to review all the call recordings once more before we issue a county court claim. At the very least we should be contacting trading standards over this as they simply should not describe the service as "Next day" if it is not. They do not even have a asterisk with "* Some locations may be up to 4 working days" or some such! It is misleading advertising.
Update: ETA 12:30 Tuesday, 5 days after it was shipped next day from London.
Update: Just before 11:00 local time Tuesday, I have my camera and lens and memory card, it is all well packaged still, no dents, and works a treat. More on 1Dx when I have had a play with it.
And yes, DHL handed to SpeedEx who drove up in a FedEx van...
No signature, just handed to a bloke in the street (which happened to be me).
Odd how DHL claim it was signed for. I may ask for a copy, as just yet more fraud.
Update: DHL refunding charges.
Subscribe to:
Posts (Atom)
Clocks
Some time geeks (should I say Time Lords) checked out my clocks. Seems they are impressed, saying sub microsecond. I have spent all day tryi...
-
Broadband services are a wonderful innovation of our time, using multiple frequency bands (hence the name) to carry signals over wires (us...
-
For many years I used a small stand-alone air-conditioning unit in my study (the box room in the house) and I even had a hole in the wall fo...
-
This is an appeal for (sensible) comments. I am working on revised A&A tariffs for broadband. For those that are not sure how they wor...






